#coding:utf-8
#1.获取数据集
#2.数据基本处理
#2.1.数据划分
#3.特征工程——标准化
#4.机器学习(线性回归)
#5.模型评估
fromsklearn.datasetsimportload_boston#1.获取数据集,所使用的引用
fromsklearn.model_selectionimporttrain_test_split#2.数据基本处理,所使用的引用
fromsklearn.preprocessingimportStandardScaler#3.特征工程——标准化,所使用的引用
fromsklearn.linear_modelimportLinearRegression,SGDRegressor,Ridge#4.机器学习,所使用的引用
fromsklearn.metricsimportmean_squared_error#5.模型评估,所使用的引用
deflinear_model1():
#正规方程优化方式
#1.获取数据集
boston=load_boston()
#2.数据基本处理
#2.1.数据划分
x_train,x_test,y_train,y_test=train_test_split(boston.data,boston.target,test_size=0.2)#2.1.数据划分,20%测试集,80%训练集
#3.特征工程——标准化
transfer=StandardScaler()
x_train=transfer.fit_transform(x_train)
x_test=transfer.fit_transform(x_test)
#print(x_train)
#print(x_test)
#4.机器学习(线性回归)
estimator=LinearRegression()
estimator.fit(x_train,y_train)
print("这个模型的偏置是:\n",estimator.intercept_)
#5.模型评估
#5.1预测值和准确值
y_pre=estimator.predict(x_test)
print("预测值是:\n",y_pre)
score=estimator.score(x_test,y_test)
print("准确率是:\n",score)
#5.2均方误差
ret=mean_squared_error(y_test,y_pre)
print("均方误差是:\n",ret)
deflinear_model2():
#梯度下降方式优化
#1.获取数据集
boston=load_boston()
#2.数据基本处理
#2.1.数据划分
x_train,x_test,y_train,y_test=train_test_split(boston.data,boston.target,test_size=0.2)#2.1.数据划分,20%测试集,80%训练集
#3.特征工程——标准化
transfer=StandardScaler()
x_train=transfer.fit_transform(x_train)
x_test=transfer.fit_transform(x_test)
#4.机器学习(线性回归)
#estimator=LinearRegression()
estimator=SGDRegressor(max_iter=1000)
estimator.fit(x_train,y_train)
print("这个模型的偏置是:\n",estimator.intercept_)
#5.模型评估
#5.1预测值和准确值
y_pre=estimator.predict(x_test)
print("预测值是:\n",y_pre)
score=estimator.score(x_test,y_test)
print("准确率是:\n",score)
#5.2均方误差
ret=mean_squared_error(y_test,y_pre)
print("均方误差是:\n",ret)
deflinear_model3():
#岭回归
#1.获取数据集
boston=load_boston()
#2.数据基本处理
#2.1.数据划分
x_train,x_test,y_train,y_test=train_test_split(boston.data,boston.target,test_size=0.2)#2.1.数据划分,20%测试集,80%训练集
#3.特征工程——标准化
transfer=StandardScaler()
x_train=transfer.fit_transform(x_train)
x_test=transfer.fit_transform(x_test)
#4.机器学习(线性回归)
#estimator=LinearRegression()
estimator=Ridge()
estimator.fit(x_train,y_train)
print("这个模型的偏置是:\n",estimator.intercept_)
#5.模型评估
#5.1预测值和准确值
y_pre=estimator.predict(x_test)
print("预测值是:\n",y_pre)
score=estimator.score(x_test,y_test)
print("准确率是:\n",score)
#5.2均方误差
ret=mean_squared_error(y_test,y_pre)
print("均方误差是:\n",ret)
#if__name__=="__name__":
linear_model1()
linear_model2()
linear_model3()
运行结果
正规方程
这个模型的偏置是:
22.44702970297033
预测值是:
[32.8568623716.438413213.1269990928.9785719620.0993647817.04228827
12.1949609428.9790834329.0962807922.8147780323.3199172628.08352655...]
准确率是:
0.7377378215203308
均方误差是:
20.382664610246923
梯度下降方式
这个模型的偏置是:
[22.6973293]
预测值是:
[13.2512663825.6395591719.8666376615.3411051936.4618728414.46931269
23.4712679228.5972460716.9788364229.7795103619.7822150319.99092917...]
准确率是:
0.6792036485662996
均方误差是:
22.98931243111312
梯度下降加上岭回归方式
这个模型的偏置是:
22.366584158415883
预测值是:
[11.7448027919.2334226236.1456509915.8971341829.956034339.1221646
25.657720.0789859528.0086537128.6747698530.1552826522.00776699...]
准确率是:
0.8099165448127184
均方误差是:
16.103426905025767