Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 逻辑回归-如何在另一个数据集上使用模型并获得概率值_Python_Pandas_Machine Learning_Scikit Learn_Logistic Regression - Fatal编程技术网

Python 逻辑回归-如何在另一个数据集上使用模型并获得概率值

Python 逻辑回归-如何在另一个数据集上使用模型并获得概率值,python,pandas,machine-learning,scikit-learn,logistic-regression,Python,Pandas,Machine Learning,Scikit Learn,Logistic Regression,我正在制作我的第一个ML模型,我需要一些关于在第二个数据集上使用模型的帮助 所以我有两套:“train_full.csv”和“test_full.csv”。这两组具有完全相同的结构 唯一的区别是在“train_full.csv”列中,“target”用0和1填充,而在“test_set.csv”列中该列为空,我想预测这些值 下面你可以找到我基于“train_full.csv”的模型。为了代码清晰,我跳过了数据清理的整个部分: df2=pd.read_csv(“train_full.csv”,se

我正在制作我的第一个ML模型,我需要一些关于在第二个数据集上使用模型的帮助

所以我有两套:“train_full.csv”和“test_full.csv”。这两组具有完全相同的结构

唯一的区别是在“train_full.csv”列中,“target”用0和1填充,而在“test_set.csv”列中该列为空,我想预测这些值

下面你可以找到我基于“train_full.csv”的模型。为了代码清晰,我跳过了数据清理的整个部分:

df2=pd.read_csv(“train_full.csv”,sep=”;)
test_set=pd.read_csv(“test_full.csv”,sep=';”)
#数据集清理
#我的y列命名为“target”,我的x列是剩余的列
X_系列,X_测试,y_系列,y_测试=系列测试分割(df2.下降('目标',轴=1),
df2[“目标”],测试尺寸=0.35,
随机状态=101)
#建立Logistic回归模型
logmodel=LogisticRegression()
结果=对数模型拟合(X\U序列,y\U序列)
#预测
预测=对数模型预测(X_检验)
打印(度量.混淆矩阵(y检验,预测))
打印(指标、分类报告(y检验、预测))#准确率:78%
auc=度量。roc_auc_得分(y_检验,y_预测概率)#auc:~0.695
现在,我想在第二个数据集上使用该模型,我已经在第二行代码中导入了该模型,但是我不再需要将数据集拆分为训练和测试子集。我想在整个“test_full.csv”集合上使用上面的模型。我该怎么做

还有,有没有办法用计算出的概率添加一列?因此,我的输出将是一个如下所示的数据帧:

Id probability target
0 0.75 1
1 0.78 1
2 0.34 0
3 0.84 1
4 0.13 0
5 0.34 0
这很简单

您只需从
test\u集合中删除目标列
,然后使用
logmodel.predict()
用于分类,而
logmodel.predict\u proba()
用于概率。下面是一个相同=>

test_set = test_set.drop(['target'],axis=1)
==>下面两行将在
test\u set
dataframe中添加一列,该列是与预测相关的prob和分类

test_set['prob'] = logmodel.predict_proba(test_set)
test_set['classification'] = logmodel.predict(test_set)

尝试类似这样的方法
Predictions2=logmodel.predict_proba(test_set)[1]
概率为1。嘿,我已经尝试了你的解决方案(不得不删除
test_set=test_set.drop(columns='target')
,因为它包含了我想要预测的空值。你这行的结果是:
数组([0.8072,0.1927])
。我把它改为:
Predictions2=logmodel.predict(test\u set)
,它返回了一个0和1的数组。这就是你预测二进制变量的方式吗?如果我把这个数组当作“目标”,我会犯错误吗就我所知,proba值的结果应该是每行一个值,并根据该值计算“target”(如果proba>0.5,则为1),esle:0)我的行应该是
Predictions2=logmodel。predict_proba(test_set)[:,1]
-它选择列“1”上一行选择的行“1”“.Predict_proba返回概率数组,例如,如果您有5个类要预测,则将有5列,每行总和为1。默认阈值为0.5,但您可以针对特定度量(例如f1)优化其值。