【问题标题】:How to get the same results in different iterations in RandomForest in sklearn如何在 sklearn 的 RandomForest 中的不同迭代中获得相同的结果
【发布时间】:2019-08-18 18:39:36
【问题描述】:

我使用随机森林分类器进行分类,并且在每次迭代中我得到不同的结果。我的代码如下。

input_file = 'sample.csv'

df1 = pd.read_csv(input_file)
df2 = pd.read_csv(input_file)
X=df1.drop(['lable'], axis=1)  # Features
y=df2['lable']  # Labels
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

clf=RandomForestClassifier(random_state = 42, class_weight="balanced")
clf.fit(X_train,y_train)
y_pred=clf.predict(X_test)
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))

根据其他answers 的建议,我添加了参数n_estimatorsrandom_state。但是,它对我不起作用。

我已附上csv文件here

如果需要,我很乐意提供更多详细信息。

【问题讨论】:

    标签: python scikit-learn classification random-forest


    【解决方案1】:

    您还需要为训练测试拆分设置随机状态。

    以下代码将为您提供可重现的结果。推荐的方法是不要更改 random_state 值以提高性能。

    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn.ensemble import  RandomForestClassifier
    from sklearn import metrics
    
    df1=pd.read_csv('sample.csv')
    
    X=df1.drop(['lable'], axis=1)  # Features
    y=df1['lable']  # Labels
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,random_state=5)
    
    clf=RandomForestClassifier(random_state = 42, class_weight="balanced")
    clf.fit(X_train,y_train)
    y_pred=clf.predict(X_test)
    print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
    

    输出:

    准确度:0.6777777777777778

    【讨论】:

    • 一旦你为 random_state 修复了一些值,在你的建模过程中不要改变它(当你调整其他参数时,比如n_estimatorsmax_depth,等等)
    • 也请花点时间查看stackoverflow.com/help/someone-answers
    • 很高兴能帮上忙!这两个随机状态可以有不同的值
    • 你不应该试图找到最优的随机状态。阅读here。你必须给它分配一些随机值!!!
    • 如果您知道这个问题的答案,请告诉我:stackoverflow.com/questions/55466081/… 谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 2019-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多