我有一个pandas数据框,用于二元分类情况(类别A和类别B)。为了获取X_train, X_test, y_train, y_test
,我按70:30的比例进行分割,如下所示:
from sklearn.model_selection import train_test_splittarget = pd.DataFrame(data['good'])features = data.drop('good', axis=1)X_train, X_test, y_train, y_test = train_test_split(features, target, test_size = 0.3, random_state = 0)
然后我使用了随机森林分类器,代码如下:
from sklearn.ensemble import RandomForestClassifierclf = RandomForestClassifier(n_jobs=2, random_state=0)model = clf.fit(X_train, y_train)
通常,你可以通过clf.predict(X_test)
来获取预测结果。它会返回一个numpy.ndarray
对象,如下所示:
array(['0', '0', '1', '0', '0', '1', '0', '1', '1', '1'], dtype=object)
然后,我想要计算预测概率,使用clf.predict_proba(X_test)
,结果如下:
array([[ 0.7 , 0.3 ], [ 0.8 , 0.2 ], [ 0.4 , 0.6 ], [ 0.8 , 0.2 ], [ 0.5 , 0.5 ], [ 0.1 , 0.9 ], [ 0.5 , 0.5 ], [ 0.3 , 0.7 ], [ 0.3 , 0.7 ], [ 0.5 , 0.5 ]])
我想在clf.predict_proba(X_test)
的输出中获取更多的小数位。(我期望有3位小数)例如,
array([[ 0.712 , 0.288 ], [ 0.845 , 0.155 ... etc
如果答案还能将clf.predict(X_test)
和clf.predict_proba(X_test)
转换并合并到pandas数据框中,那就更好了,因为我将继续计算GINI指数。提前感谢
回答:
增加模型参数中的’n_estimators’(看起来你已经将其设置为默认值10)。