首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python -多类logistic回归预测季节

python -多类logistic回归预测季节
EN

Stack Overflow用户
提问于 2018-06-24 03:06:03
回答 1查看 1.3K关注 0票数 1

我想完成我的逻辑回归算法,它根据商店名称和购买类别预测每年的季节(参见下面的样本数据,并注意标签编码。商店名称是任何典型的字符串,而类别tops是各种统一字符串输入中的一种。四季也一样。

代码语言:javascript
复制
store_df.head()

        shop    category    season
    0   594     4           2
    1   644     4           2
    2   636     4           2
    3   675     5           2
    4   644     4           0

我的完整代码如下所示,我不确定为什么它不接受我的输入值的形状。我的目标是利用商店和类别来预测季节。

代码语言:javascript
复制
predict_df = store_df[['shop', 'category', 'season']]
predict_df.reset_index(drop = True, inplace = True)
le = LabelEncoder()
predict_df['shop'] = le.fit_transform(predict_df['shop'].astype('category'))
predict_df['top'] = le.fit_transform(predict_df['top'].astype('category'))
predict_df['season'] = le.fit_transform(predict_df['season'].astype('category'))
X, y = predict_df[['shop', 'top']], predict_df['season']
xtrain, ytrain, xtest, ytest = train_test_split(X, y, test_size=0.2)
lr = LogisticRegression(class_weight='balanced', fit_intercept=False, multi_class='multinomial', random_state=10)
lr.fit(xtrain, ytrain)

当我运行上面的代码时,我遇到了错误,ValueError: bad input shape (19405, 2)

我的解释是,它必须与两个功能输入有关,但我需要进行哪些更改才能同时使用这两个功能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-24 08:15:24

这里有一个工作的例子,你可以用它来比较你的代码和消除任何bug。我已经在数据框中添加了几行-详细信息和结果在代码之后。如您所见,该模型正确预测了四个标签中的三个。

代码语言:javascript
复制
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix

le = LabelEncoder()
sc = StandardScaler()

X = pd.get_dummies(df.iloc[:, :2], drop_first=True).values.astype('float')
y = le.fit_transform(df.iloc[:, -1].values).astype('float')

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0)
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

log_reg = LogisticRegression()
log_reg.fit(X_train, y_train)
y_pred = log_reg.predict(X_test)

conf_mat = confusion_matrix(y_test, y_pred)

df
Out[32]: 
   shop  category  season
0   594         4       2
1   644         4       2
2   636         4       2
3   675         5       2
4   644         4       0
5   642         2       1
6   638         1       1
7   466         3       0
8   455         4       0
9   643         2       1

y_test
Out[33]: array([2., 0., 0., 1.])

y_pred
Out[34]: array([2., 0., 2., 1.])

conf_mat
Out[35]: 
array([[1, 0, 1],
       [0, 1, 0],
       [0, 0, 1]], dtype=int64)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51004261

复制
相关文章

相似问题

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