我想用randomforest来预测用电量。在对数据进行调整后,最新状态如下
X=df[['Temp(⁰C)','Araç Sayısı (adet)','Montaj V362_WH','Montaj V363_WH','Montaj_Temp','avg_humidity']]
X.head(15)
输出:
^{pr2}$输出:
Montaj_ET_kWh/day
0 11951.0
1 41821.0
2 42534.0
3 14537.0
4 41305.0
5 42295.0
6 44923.0
7 44279.0
8 45752.0
9 44432.0
10 25786.0
11 42203.0
12 40676.0
13 39980.0
14 39404.0
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.30, random_state=None)
clf = RandomForestRegressor(n_estimators=10000, random_state=0, n_jobs=-1)
clf.fit(X_train, y_train['Montaj_ET_kWh/day'])
for feature in zip(feature_list, clf.feature_importances_):
print(feature)
输出
('Temp(⁰C)', 0.11598075020423881)
('Araç Sayısı (adet)', 0.7047301384616493)
('Montaj V362_WH', 0.04065706901940535)
('Montaj V363_WH', 0.023077554218712878)
('Montaj_Temp', 0.08082006262985514)
('avg_humidity', 0.03473442546613837)
sfm = SelectFromModel(clf, threshold=0.10)
sfm.fit(X_train, y_train['Montaj_ET_kWh/day'])
for feature_list_index in sfm.get_support(indices=True):
print(feature_list[feature_list_index])
输出:
Temp(⁰C)
Araç Sayısı (adet)
X_important_train = sfm.transform(X_train)
X_important_test = sfm.transform(X_test)
clf_important = RandomForestRegressor(n_estimators=10000, random_state=0, n_jobs=-1)
clf_important.fit(X_important_train, y_train)
y_test=y_test.values
y_pred = clf.predict(X_test)
y_test=y_test.reshape(-1,1)
y_pred=y_pred.reshape(-1,1)
y_test=y_test.ravel()
y_pred=y_pred.ravel()
label_encoder = LabelEncoder()
y_pred = label_encoder.fit_transform(y_pred)
y_test = label_encoder.fit_transform(y_test)
accuracy_score(y_test, y_pred)
输出:
0.010964912280701754
我不知道为什么准确度太低了,知道我哪里出错了吗
你的错误是,你在一个回归设置中要求准确度(一个分类度量),这是无意义的。在
从
accuracy_score
documentation开始(加上强调):检查scikitlearn中提供的list of metrics以获得合适的回归度量(在这里您还可以确认准确度仅用于分类);有关更多详细信息,请参阅Accuracy Score ValueError: Can't Handle mix of binary and continuous target中的答案
相关问题 更多 >
编程相关推荐