微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的随机森林分类算法没有给出我想要的结果

如何解决我的随机森林分类算法没有给出我想要的结果

我制作了一张随机数的 excel 表(3000 行和 6 列)并将其设置为具有 B 列 >= 50、C 列 0 和 E 列 1 的任何行都得到最后的“y”值为 1。否则,它会获得 0 值。通过这个 RandomForestClassifier 代码运行它,它不起作用,要么为所有新测试数据返回 0,要么在预测时甚至不考虑 B 列。我该如何解决这个问题?

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report,confusion_matrix,accuracy_score
import pickle


data_crd = pd.read_csv(r'C:\Users\Rada1\.spyder-py3\new_created_data.csv')
#C:\Users\Rada1\.spyder-py3\new_created_data.csv
data_crd.head()


X = data_crd.iloc[:,1:5]
y = data_crd.iloc[:,5]

#print (X)
#print (y)

X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2,random_state=0)

sc = StandardScaler()

X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

classifier = RandomForestClassifier (n_estimators = 500,random_state = 0)
classifier.fit (X_train,y_train)
y_pred = classifier.predict(X_test)

print (classification_report(y_test,y_pred))
print (confusion_matrix(y_test,y_pred))
print (accuracy_score(y_test,y_pred))


with open ('model_wcd','wb') as f:
    pickle.dump(classifier,f)  

我得到 100% 的准确率作为我的结果,但我已经感觉不对了。我需要调整什么?

precision    recall  f1-score   support

           0       1.00      1.00      1.00       515
           1       1.00      1.00      1.00        85

    accuracy                           1.00       600
   macro avg       1.00      1.00      1.00       600
weighted avg       1.00      1.00      1.00       600

[[515   0]
 [  0  85]]
1.0    

解决方法

希望如果你使用 strify =y 它可能会起作用 X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 0.2,random_state=0,stratify=y) 并且还使用 MinMaxScaler 作为数值特征并将它们重塑为 (-1,1) x_train_num=num_feature.transform(x_train[column_name].values.reshape(-1,1)) x_test_num=num_feature.transform(x_test[column_name].values.reshape(-1,1))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。