将预测概率与X_test结果合并导致NaN

在我的分类问题中,y=’late_or_ahead’。值为1表示提前,值为0表示晚到。

log_reg.predict_proba(X_test)的结果是

array([[0.92537486, 0.07462514],   [0.24936417, 0.75063583],   [0.6222988 , 0.3777012 ],   [0.29020199, 0.70979801],    ....   [0.93961168, 0.06038832]]

输入: log_reg.classes_ 返回 array([0,1])如果我理解正确的话,这意味着数组的左侧部分表示Y=0的概率,数组的右侧部分表示Y=1的概率。如果我在这方面理解错误,请纠正我。

基于这个假设:

proba = pd.DataFrame(log_reg.predict_proba(X_test)) #将数组转换为数据框proba.columns = ['probability_late','probability_ahead']proba   probability_late probability_ahead0   0.925375           0.0746251   0.249364           0.7506362   0.622299           0.3777013   0.290202           0.7097984   0.939612           0.060388... ... ...

现在,当我使用下面的代码将这两个列(probability_late和probability_ahead)与X_test合并时:

proba.reset_index(drop=True)test_with_proba=X_testtest_with_proba.reset_index(drop=True)test_with_proba['probability_late']=proba['probability_late']test_with_proba['probability_ahead']=proba['probability_ahead']test_with_proba[['probability_late','probability_ahead']]

结果如下:

367 NaN            NaN219 NaN            NaN72  0.167852    0.83214855  0.338693    0.661307371 NaN            NaN... ... ...

这里的问题是什么?


回答:

假设你有:

df1:

    a   b1   2   34   2   5

df2:

    a   b1   6   35   2   8

df1['c'] = df2['a']

df1:

    a   b   c1   2   3   6.04   2   5   NaN

如你所见,分配时会进行左连接。

df1 的索引是 [1,4],但 df2 的索引是 [1,5]

在分配时,只有df1的索引1与df2的索引匹配。

所以索引4将会有NaN值。

那么如何解决这个问题呢?

只需使用 .reset_index(drop=True) 重置索引

df1 = df1.reset_index(drop=True)df2 = df2.reset_index(drop=True)

df1['c'] = df2['a']

df1:

    a   b   c0   2   3   61   2   5   2

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注