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


本文插图

  • 第一个图是调整之前的, 就中位数来说, 春季气温最低, 秋季气温最高
  • 第二个图是调整之后的, 就中位数来说, 冬季气温最低, 夏季气温最高

中国统计网Python实战案例:我们对共享单车的需求有多大?
本文插图
显然第二张的图的结果较符合常理, 故删除另外那一列 。
df.drop('season', axis=1, inplace=True) df.shape (10886,16)8. 其他变量和总租赁数量的关系
这里我直接使用利用seaborn的pairplot绘制剩余的温度, 体感温度, 相对湿度, 风速这四个连续变量与未注册用户和注册用户的关系在一张图上 。
sns.pairplot(df[['temp','atemp','humidity','windspeed','casual','registered','count']])为了方便纵览全局, 我将图片尺寸缩小, 如下图所示. 纵轴从上往下依次是温度, 体感温度, 相对湿度, 风速, 未注册用户, 注册用户, 所有用户, 横轴从左往右是同样的顺序 。
中国统计网Python实战案例:我们对共享单车的需求有多大?
本文插图
从图上可以看出, 温度和体感温度分别与未注册用户, 注册用户,所有用户均有一定程度的正相关, 而相对湿度和风速与之呈现一定程度的负相关 。 另外, 其他变量之间也有不同程度的相关关系 。
另外, 第四列(风速)在散点图中间有明显的间隙. 需要揪出这一块来看看 。
df['windspeed'] Name:windspeed,Length: 10886,dtype:float64 风速为0, 这明显不合理, 把其当成缺失值来处理 。 我这里选择的是向后填充 。
df.loc[df.windspeed ==0,'windspeed'] = np.nan df.fillna(method='bfill', inplace=True) df.windspeed.isnull.sum09. 相关矩阵
由于多个变量不满足正态分布, 对其进行对数变换 。
中国统计网Python实战案例:我们对共享单车的需求有多大?
本文插图
中国统计网Python实战案例:我们对共享单车的需求有多大?
本文插图
经过对数变换之后, 注册用户和所有用户的租赁数量和正态还是相差较大, 故在计算相关系数时选择spearman相关系数 。
中国统计网Python实战案例:我们对共享单车的需求有多大?
本文插图
均有不同程度的相关程度, 其中, temp和atemp高度相关, count和registered高度相关, 数值均达到0.99 。
中国统计网Python实战案例:我们对共享单车的需求有多大?
本文插图
岭回归和Lasso回归是加了正则化项的线性回归, 下面将分别构造三个模型:岭回归、Lasso回归和线性回归 。
1. 岭回归(1)划分数据集
中国统计网Python实战案例:我们对共享单车的需求有多大?
本文插图
(2)模型训练
fromsklearn.linear_modelimportRidge #这里的alpha指的是正则化项参数, 初始先设置为1. rd = Ridge(alpha=1) rd.fit(X_train, y_train) print(rd.coef_) print(rd.intercept_) [0.00770067-0.000343010.00391960.008182430.03635549-0.01558927 0.090807880.09714060.027918120.06114358-0.00099811] 2.6840271343740754 通过前面我们知道, 正则化项参数对结果的影响较大, 下一步我们就通过岭迹图来选择正则化参数 。
中国统计网Python实战案例:我们对共享单车的需求有多大?


推荐阅读