提高ML模型的准确性-特征/模型选择或参数

时间:2019-01-29 00:36:00

标签: python machine-learning scikit-learn feature-selection

我正在建立一个机器学习模型,该模型将根据价格,星期几,客户规模,产品属性以及它们提前多少来预测哪些产品的转化率(Y)最高。重新出售(X)。但是,在比较y_prediction与y_test值时,我无法获得较高的r平方值。

我对应该包括的产品功能进行了很多修改,尝试了两种方法:从所有可能的功能开始并剥离它们,从1个功能开始并通过反复试验一次添加一个功能返回。我尝试了交叉验证,尝试了限制数据集,但从未获得大于0.27的r2值。

new_df =具有所有特征的数据框,具有一些预处理功能,但没有特征缩放 conversion ='Y'->的值应一直等于0,一直到261。数字越大表示销售额越高

from sklearn.preprocessing import MinMaxScaler, LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score

X = new_df.drop(['conversion'],axis=1)
Y = new_df['conversion']
enc = LabelEncoder()
X['REGION'] = enc.fit_transform(X['REGION'] -> an example of pre-processing
X_scaled = scaler.fit_transform(X[['day_type','days_remaining','Size']])

X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, random_state=4)
clf = LinearRegression(normalize=True)
clf.fit(X_train, y_train)
y_pred = (clf.predict(X_test))
print(r2_score(y_test, y_pred))

我希望获得有关以下内容的指导

1)我的代码有天生的错误吗?在这个级别上,它本来应该是相当基本的,但是如果我得到的分数太低,我就会犹豫要弄乱参数(对我来说,这就像是用一辆熄火的发动机清洗汽车一样)

2)是否有比LinearRegression更好的分类器。我和很多人一起玩,但是坦率地说,我不知道哪个是最好的

3)由于许多转换值为零(无销售),因此我应该限制new_df仅包括转换> 0的行吗?我最初的倾向是将它们包括在内,因为它们是有效的数据实例,但可能会使结果偏低。我不是要预测它们的转化,而是要看看它是否能预测哪些产品具有最高的转化率。需要明确的是,每个销售实例中有80个没有销售实例。

4)r平方是衡量此成功率的最佳方法,还是应该使用其他度量?

0 个答案:

没有答案