首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SciKit-Learn:预测错误

SciKit-Learn:预测错误
EN

Stack Overflow用户
提问于 2017-08-02 23:44:25
回答 1查看 90关注 0票数 0

据我所见,这似乎是一个常见的错误,但有许多潜在的原因。

我正在尝试用Python编写一个逻辑回归。我的数据保存为pandas数据框。

代码语言:javascript
复制
train, test = train_test_split(final_dat[train_cols], train_size=0.80, random_state=1)
logit = sm.Logit(train['SPR_Created__c'], train.drop(['SPR_Created__c'], axis=1)) 
result = logit.fit()
print result.summary()
result.predict(test[train_cols])

错误:

代码语言:javascript
复制
result.predict(test[train_cols])

ValueError: shapes (13664,18) and (17,) not aligned: 18 (dim 1) != 17 (dim 0)

我不确定这个错误的发生,因为所有的大多数变量都已经调整了。

代码语言:javascript
复制
final_dat[train_cols].info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 68319 entries, 0 to 31978
Data columns (total 18 columns):
Is_Subject                                68319 non-null int64
Is_Description                            68319 non-null int64
SPR_Created__c                            68319 non-null int64
description2_contains_any_synonym         68319 non-null int64
description_length                        68319 non-null int64
subject_length                            68319 non-null int64
description2_length                       68319 non-null int64
Is_Description2                           68319 non-null int64
Is_Adverse_Event                          68319 non-null int64
subject_contains_common_spr_terms         68319 non-null int64
description_contains_common_spr_terms     68319 non-null int64
description2_contains_common_spr_terms    68319 non-null int64
pattern_exists_in_description             68319 non-null int64
pattern_exists_in_description_count       68319 non-null float64
pattern_exists_in_description2            68319 non-null int64
pattern_exists_in_description2_count      68319 non-null float64
subject_contains_any_synonym              68319 non-null int64
description_contains_any_synonym          68319 non-null int64
dtypes: float64(2), int64(16)
memory usage: 12.4 MB

有什么想法可能是错误的吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-02 23:49:56

定义您使用的变量会很有帮助,或者至少用类似的数据替换数据,但我认为我发现了您的问题。

在执行列车测试拆分时,traintest是DataFrames,其中的列是从train_cols定义的。我假设'SPR_Created__c‘必须包含在train_cols中。

您要做的是对所有列使用test进行预测,包括目标列'SPR_Created__c‘。但是,您希望使用除“SPR_Created__c”之外的所有列。您不需要执行result.predict(test[train_cols]) (这是多余的,因为这些列已经是test中的唯一列,所以您可以只使用test而不是test[train_cols]),而是希望执行result.predict(test.drop(['SPR_Created__c']))

这就是你的形状偏离一个的原因,因为你用train_cols中除'SPR_Created__c‘之外的所有列训练你的模型,但是你用所有这些列测试你的模型。

TL;DR:用result.predict(test.drop(['SPR_Created__c']))代替result.predict(test[train_cols])

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45465372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档