我想使用机器学习来识别影响净收入
的特征,并基于这些数据得出结论。数据集来自一家类似于Turo的汽车共享公司。数据集包含约80000行,14列。
我很难构建一个探索性数据分析(EDA),特别是使用机器学习算法来找出影响net_revenue
的特征。
#我目前所做的
-
我对这些数据进行了相关矩阵分析,发现
'youth driver fee'
与'net_revenue'
的相关性最高(我将make
和model
列排除在分析之外,因为有太多的品牌和型号,很难预测它们对net_revenue
的影响) -
我想验证这种相关性是否在一些机器学习算法中,如
Logistic regression
和Randomforest
,具有相关性。为了进一步应用RandomForest机器学习验证这种相关性,我将分类变量(payment_type, returning_guest和returning_host)转换为虚拟变量(0和1)
所以我尝试按照这个帖子应用这两个模型
LogisticRegression
cols=['driver_age', 'completed_trips', 'vehicle_price', 'lead_time', 'trip_length', 'trip_revenue', 'youth_driver_fee', 'insurance_fee', 'delivery_fee', 'returning_quest_First_time','returning_quest_Repeat','returning_host_First_time','returning_host_repeat'] X=data[cols] y=data['net_revenue']from sklearn.cross_validation import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)from sklearn.linear_model import LogisticRegressionfrom sklearn import metricslogreg = LogisticRegression()logreg.fit(X_train, y_train)
*LogisticRegression的默认设置
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True, intercept_scaling=1, max_iter=100, multi_class=’ovr’, n_jobs=1, penalty=’l2′, random_state=None, solver=’liblinear’, tol=0.0001, verbose=0, warm_start=False)
**在执行上述代码后,IPython
笔记本会冻结,看起来像是永远不会输出结果。所以我不得不重启内核。
RandomForest
from sklearn.ensemble import RandomForestClassifierrf = RandomForestClassifier()rf.fit(X_train, y_train)
同样的问题!
我的问题:
- 如何为发现影响净收入的特征构建一个机器学习模型?是否有解决相同问题资源?Kaggle竞赛绝对可以,或者可能是medium上的帖子。
我找到一个数据集来预测目标值的特征,但目标值看起来是分类性的,而我的目标值是连续的。从https://www.kaggle.com/prasadkevin/prediction-of-quality-of-wine
-
要使用
LogisticRegression
和RandomForest
,net_revenue
必须是分类变量吗? -
你是否知道Kaggle上有什么类似的数据集?因为我找不到任何与此相似的机器学习流程!
回答:
几点说明。
在使用任何机器学习模型时,你必须将每一个分类变量转换为虚拟变量,而不仅仅是为随机森林准备的。
你正在为回归问题使用RandomForestClassifier
,这不是你想要的。应该使用sklearn.ensemble.RandomForestRegressor
。
如果没有抛出错误,你的机器学习模型可能正在运行。由于你有80,000行数据,这可能需要一些时间。当你定义模型时,定义它们为
logreg = LogisticRegression(verbose=1)
和
rf = RandomForestRegressor(verbose=1)
如果模型正在运行,它们会打印出它们的进度情况,这样你就可以看到正在发生什么。