Значение пытается быть установлено на копии фрагмента из фрейма данных. Попробуйте вместо этого использовать .loc[row_indexer,col_indexer] = value

#python #pandas

#python #pandas

Вопрос:

Я прочитал этот блог

https://www.dataquest.io/blog/settingwithcopywarning/

И я думаю, что я так близок к тому, чтобы найти проблему, поэтому кто-нибудь может помочь мне решить это в соответствии с этим блогом

 This is my code.

from treeinterpreter import treeinterpreter as ti
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import classification_report,confusion_matrix

rf = RandomForestRegressor()
rf.fit(numpy_dataframe_train, train['adj_close_price'])
prediction=rf.predict(numpy_dataframe_test)
import matplotlib.pyplot as plt
%matplotlib inline
idx = pd.date_range(test_data_start, test_data_end)
predictions_df = pd.DataFrame(data=prediction[0:], index = idx, columns=['adj_close_price'])
predictions_df['adj_close_price'] = predictions_df['adj_close_price'].apply(np.int64)
predictions_df['adj_close_price'] = predictions_df['adj_close_price']   4500
predictions_df['actual_value'] = test['adj_close_price']
predictions_df.columns = ['predicted_price', 'actual_price']
predictions_df.plot()
predictions_df['predicted_price'] = predictions_df['predicted_price'].apply(np.int64)
test['adj_close_price']=test['adj_close_price'].apply(np.int64)
#print(accuracy_score(test['adj_close_price'],predictions_df['predicted_price']))
print(rf.score(numpy_dataframe_train, train['adj_close_price']))
 

Комментарии:

1. Не могли бы вы также предоставить трассировку стека и сообщение об ошибке?

2. <ipython-input-56-07c7103f8186>:19: SettingWithCopyWarning: значение пытается быть установлено на копии фрагмента из фрейма данных. Вместо этого попробуйте использовать .loc[row_indexer,col_indexer] = value См. предостережения в документации: pandas.pydata.org/pandas-docs/stable/user_guide /… тест[‘adj_close_price’]=тест[‘adj_close_price’].применить(np.int64)

Ответ №1:

Это просто предупреждение. Я предложу вам использовать более высокую и последнюю версию pandas.

Вы должны назначить так:

 test.loc[:, 'adj_close_price']=test['adj_close_price'].apply(np.int64)
 

или вы можете отключить его с помощью:

 import pandas as pd
pd.options.mode.chained_assignment = None
 

Комментарии:

1. Я добавляю это » test.loc[:, ‘adj_close_price’]=test[‘adj_close_price’].apply(np.int64) и теперь он работал с 1 часа: P

2. Да, я знаю, как вы упомянули выше. Но дело в том, что я получил точность 50% прямо сейчас. и я думаю, что решение этого предупреждения увеличит точность этой модели до 90%

Ответ №2:

попробуй

 predictions_df = predictions_df.assign(
        adj_close_price=predictions_df['adj_close_price'].apply(np.int64), 
        adj_close_price=predictions_df['adj_close_price']   4500,
        actual_value=test['adj_close_price'])