我正在使用scikit中的sklearn.svm.svc来学习二进制分类.我正在使用它的predict_proba()函数来获得概率估计.谁能告诉我predict_proba()如何在内部计算概率?
我LogisticRegression()在scikit-learn高度不平衡的数据集中使用该 方法.我甚至把这个class_weight功能变成了auto.
我知道在Logistic回归中,应该可以知道特定一对类的阈值是多少.
是否有可能知道该LogisticRegression()方法设计的每个一对一类的阈值是多少?
我没有在文档页面中找到任何内容.
它是否默认将0.5值作为所有类的阈值应用,而不管参数值如何?
classification machine-learning scikit-learn logistic-regression
我使用scikit-learn训练了ExtraTreesClassifier(gini索引),它非常适合我的需求.准确性不是很好,但使用10倍交叉验证,AUC为0.95.我想在我的工作中使用这个分类器.我对ML很新,所以如果我问你一些概念错误的话,请原谅我.
我绘制了一些ROC曲线,通过它,我似乎有一个特定的阈值,我的分类器开始表现良好.我想在拟合的分类器上设置这个值,所以每次我调用预测时,分类器都会使用该阈值,我可以相信FP和TP的速率.
我也来到这篇文章(scikit .predict()默认阈值),其中声明阈值不是分类器的通用概念.但由于ExtraTreesClassifier的方法是predict_proba,并且ROC曲线也与thresdholds定义有关,所以在我看来我应该可以指定它.
我没有找到任何参数,也没有找到任何类/接口来实现它.如何使用scikit-learn为训练有素的ExtraTreesClassifier(或任何其他人)设置阈值?
非常感谢,科利斯
我正在建立一个分类器,通过贷款俱乐部数据,并选择最好的X贷款.我训练了一个随机森林,并创建了通常的ROC曲线,混淆矩阵等.
混淆矩阵将分类器的预测(森林中树木的多数预测)作为参数.但是,我希望在不同的阈值下打印多个混淆矩阵,知道如果我选择10%最佳贷款,20%最佳贷款等会发生什么.
我从阅读其他问题中知道,改变门槛通常是一个坏主意,但有没有其他方法可以看到这些情况下的混淆矩阵?(问题A)
如果我继续更改阈值,我应该假设这样做的最佳方法是预测问题然后手动阈值,将其传递给混淆矩阵?(问题B)
classification threshold confusion-matrix random-forest scikit-learn
在航班延误数据集的版本中使用LogisticRegression类.scikit-learn
我pandas用来选择一些列:
df = df[["MONTH", "DAY_OF_MONTH", "DAY_OF_WEEK", "ORIGIN", "DEST", "CRS_DEP_TIME", "ARR_DEL15"]]
Run Code Online (Sandbox Code Playgroud)
我NaN用0 填写值:
df = df.fillna({'ARR_DEL15': 0})
Run Code Online (Sandbox Code Playgroud)
确保分类列标有"类别"数据类型:
df["ORIGIN"] = df["ORIGIN"].astype('category')
df["DEST"] = df["DEST"].astype('category')
Run Code Online (Sandbox Code Playgroud)
然后调用get_dummies()来自pandas:
df = pd.get_dummies(df)
Run Code Online (Sandbox Code Playgroud)
现在我训练和测试我的数据集:
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()
test_set, train_set = train_test_split(df, test_size=0.2, random_state=42)
train_set_x = train_set.drop('ARR_DEL15', axis=1)
train_set_y = train_set["ARR_DEL15"]
test_set_x = test_set.drop('ARR_DEL15', axis=1)
test_set_y = test_set["ARR_DEL15"]
lr.fit(train_set_x, train_set_y)
Run Code Online (Sandbox Code Playgroud)
一旦我调用该score方法,我就会得到0.867.但是,当我调用该roc_auc_score方法时,我得到的数字大约低于0.583
probabilities = lr.predict_proba(test_set_x)
roc_auc_score(test_set_y, …Run Code Online (Sandbox Code Playgroud) classification machine-learning scikit-learn logistic-regression auc
我有一个包含二进制分类问题的不平衡数据集.我已经构建了随机森林分类器并使用了10倍折叠交叉验证.
kfold = model_selection.KFold(n_splits=10, random_state=42)
model=RandomForestClassifier(n_estimators=50)
Run Code Online (Sandbox Code Playgroud)
我得到了10倍的结果
results = model_selection.cross_val_score(model,features,labels, cv=kfold)
print results
[ 0.60666667 0.60333333 0.52333333 0.73 0.75333333 0.72 0.7
0.73 0.83666667 0.88666667]
Run Code Online (Sandbox Code Playgroud)
我通过取结果的均值和标准差来计算准确度
print("Accuracy: %.3f%% (%.3f%%)") % (results.mean()*100.0, results.std()*100.0)
Accuracy: 70.900% (10.345%)
Run Code Online (Sandbox Code Playgroud)
我计算了我的预测如下
predictions = cross_val_predict(model, features,labels ,cv=10)
Run Code Online (Sandbox Code Playgroud)
由于这是一个不平衡的数据集,我想计算每个折叠的精度,召回率和f1分数并对结果取平均值.如何计算python中的值?
python random-forest scikit-learn cross-validation supervised-learning