Machine Learning (2) - Linear Regression Multiple Variables 建立多个参数的 Linear Regression 模型
引言
上一节简单地根据面积做了房价的计算,但是在实际应用中,影响房价的因素一定不止面积一个,如下图是美国 Monroe Township 地区的房价资料,我们可以看到房龄,卧室数量都会对房价造成影响,所以我们需要用这些数据进行建模。
下面就是多参数的 Linear Regression 的建模公式:
正文
引入数据
import pandas as pd
df = pd.read_csv('/Users/rachel/Sites/pandas/py/ML/2_linear_reg_multivariate/homeprices.csv')
df
输出:
用 Pandas 整理数据
// 求出 bedrooms 列的平均值
media_bedrooms = df.bedrooms.median()
media_bedrooms // 输出 4.0
// 用平均值填补空缺数据
df = df.fillna(media_bedrooms)
df
// 输出
area bedrooms age price
0 2600 3.0 20 550000
1 3000 4.0 15 565000
2 3200 4.0 18 610000
3 3600 3.0 30 595000
4 4000 5.0 8 760000
5 4100 6.0 8 810000
训练模型
1. 创建数据模型
from sklearn import linear_model
model = linear_model.LinearRegression()
2. 用已知数据训练模型
model.fit(df[['area', 'bedrooms', 'age']], df.price)
3. 用训练好的模型进行预测
model.predict([[3000, 3, 40]])
// 输出
array([498408.25158031])
小练习
主题: 帮助 HR 部门做人事分析,根据工龄,测验分数及面试分数来预测合理的薪水值。
引入数据
import pandas as pd
from sklearn import linear_model
df = pd.read_csv('/Users/rachel/Downloads/py-master/ML/2_linear_reg_multivariate/Exercise/hiring.csv')
df
用 Pandas 整理数据
1. 把长长的列名改成简单的, 方便后面使用
df.rename(columns={'test_score(out of 10)':'test', 'interview_score(out of 10)':'interview', 'salary($)':'salary'}, inplace=True)
2. 取 test 列的平均值
test = df.test.median()
3. 把表格中的 NaN 补全
df.fillna({
'experience': 'zero',
'test' : test
}, inplace=True)
4. 把 experience 列的字符转成数字
// 在终端安装word2number
pip3 install word2number
from word2number import w2n
df.experience = df.experience.apply(w2n.word_to_num)
5. 最后整理完的数据
训练模型
1. 创建数据模型
reg = linear_model.LinearRegression()
2. 用已知数据训练模型
reg.fit(df[['experience', 'test', 'interview']], df.salary)
3. 用训练好的模型进行预测
reg.predict([[2, 9, 6]])
本作品采用《CC 协议》,转载必须注明作者和本文链接