我正在编写一种算法,目的是使用以下示例数据来预测购买季节(冬季,春季,夏季和秋季):
df.head(4)
shop category subcategory season
date
2013-09-04 abc weddings shoes winter
2013-09-04 def jewelry watches summer
2013-09-05 ghi sports sneakers spring
2013-09-05 jkl jewelry necklaces fall
预测变量为shop
,category
和subcategory
,目标变量为season
。
我有两个问题:1)预处理的最佳实践和2)此类问题的最佳分类模型
1)预处理-以下是我的代码,但是我不确定是否需要一种热编码才能正确处理分类变量:
le = LabelEncoder()
ss = StandardScaler()
X = pd.get_dummies(store_df.iloc[:, :-1], drop_first=True).values.astype('float')
y = le.fit_transform(store_df.iloc[:, -1].values).astype('float')
xtrain, xtest, ytrain, ytest = train_test_split(X, y, test_size=0.3, random_state=42)
xtrain = ss.fit_transform(xtrain)
xtest = ss.transform(xtest)
数据的形状看起来正确如下:
Training set: (67915, 1040), (67915,)
Testing set: (29107, 1040), (29107,)
预处理可以从一种热编码中受益吗?什么是最佳做法?
2)模型选择-到目前为止,我已经尝试了两个分类器,两个分类器的得分均约为66%(不理想):
逻辑回归:
lr = LogisticRegression(C=100000)
lr.fit(xtrain, ytrain)
lr_pred = lr.predict(xtest)
lr_acc = accuracy_score(ytest, lr_pred)
随机森林分类器:
rfc = RandomForestClassifier(n_estimators=100, max_features=3)
rfc.fit(xtrain, ytrain)
rfc_pred = rfc.predict(xtest)
rfc_acc = accuracy_score(ytest, rfc_pred)
假设我的预处理有效完成,我可以想象一些分类方法会起作用。欢迎任何指针。