中国统计网Python实战案例:我们对共享单车的需求有多大?( 四 )


本文插图
通过图像可以看出, 当alpha为107时所有变量岭迹趋于稳定 。 按照岭迹法应当取alpha=107 。
中国统计网Python实战案例:我们对共享单车的需求有多大?
本文插图
由于是通过肉眼观察的, 其不一定是最佳, 采用另外一种方式:交叉验证的岭回归 。
fromsklearn.linear_modelimportRidgeCV fromsklearnimportmetrics rd_cv = RidgeCV(alphas=alphas, cv=10, scoring='r2') rd_cv.fit(X_train, y_train) rd_cv.alpha_ 805.0291812295973 最后选出的最佳正则化项参数为805.03, 然后用这个参数进行模型训练
rd = Ridge(alpha=805.0291812295973)#, fit_intercept=False [ 0.00074612 -0.00382265 0.00532093 0.01100823 0.03375475 -0.01582157 0.0584206 0.09708992 0.02639369 0.0604242 -0.00116086] 2.7977274604845856 (3)模型预测
中国统计网Python实战案例:我们对共享单车的需求有多大?
本文插图

  • 训练集RMSE:1.0348076524200298
    评分:0.46691272323469246
  • 测试集RMSE:1.0508046977499312
    评分:0.45801571689420706
2. Lasso回归(1)模型训练
中国统计网Python实战案例:我们对共享单车的需求有多大?
本文插图
通过Lasso回归曲线, 可以看出大致在10附近所有变量趋于稳定
中国统计网Python实战案例:我们对共享单车的需求有多大?
本文插图
同样采用交叉验证选择Lasso回归最优正则化项参数
用这个参数重新训练模型
Las = Lasso(alpha=0.005074705239490466)#, fit_intercept=False Las.fit(X_train, y_train) print(Las.coef_) print(Las.intercept_) [ 0. -0. 0. 0.01001827 0.03467474 -0.01570339 0.06202352 0.09721864 0.02632133 0.06032038 -0. ] 2.7808303982442952 对比岭回归可以发现, 这里的回归系数中有0存在, 也就是舍弃了holiday, workingday, weather和group_season这四个自变量 。
中国统计网Python实战案例:我们对共享单车的需求有多大?
本文插图
  • 训练集RMSE:1.0347988070045209
    评分:0.4669218367318746
  • 测试集RMSE:1.050818996520012
    评分:0.45800096674816204
(2)线性回归 最后,再用传统的线性回归进行预测, 从而对比三者之间的差异 。
from sklearn.linear_model import LinearRegression #训练线性回归模型 LR = LinearRegression LR.fit(X_train, y_train) print(LR.coef_) print(LR.intercept_) #分别预测训练集和测试集, 并计算均方根误差和拟合优度 y_train_pred = LR.predict(X_train) y_test_pred = LR.predict(X_test) y_train_rmse = sqrt(metrics.mean_squared_error(y_train, y_train_pred)) y_train_score = LR.score(X_train, y_train) y_test_rmse = sqrt(metrics.mean_squared_error(y_test, y_test_pred)) y_test_score = LR.score(X_test, y_test) print('训练集RMSE: {0}, 评分: {1}'.format(y_train_rmse, y_train_score)) print('测试集RMSE: {0}, 评分: {1}'.format(y_test_rmse, y_test_score))


推荐阅读