#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'])