#兼容 pythone2,3
from __future__ import print_function
**#导入相关python库**
import os
import numpy as np
import pandas as pd
#使用matplotlib库画图
import matplotlib
import seaborn
import matplotlib.pyplot as plot
from sklearn import datasets
#设定随机数种子
np.random.seed(36)
**#读取数据**
housing = pd.read_csv(r'D:\si-tech\AI_2\CPU\my_solution\LR\house_predict\kc_train.csv',header=None)
target=housing.xs(1,axis=1) #提取销售价格列
#训练集
housing=housing.drop(1,axis=1) #要预测的就是销售价格,所以在训练过程中是不需要销售价格的,把第二列删除掉
#测试数据
t=pd.read_csv(r'D:\si-tech\AI_2\CPU\my_solution\LR\house_predict\kc_test.csv',header=None)
**#数据预处理**
#housing.info() #查看是否有缺失值
housing.describe(include='all').T #查看数据特征
**#特征缩放**
from sklearn.preprocessing import MinMaxScaler
minmax_scaler=MinMaxScaler()
minmax_scaler.fit(housing) #进行内部拟合,内部参数会发生变化
scaler_housing=minmax_scaler.transform(housing)
scaler_housing=pd.DataFrame(scaler_housing,columns=housing.columns)
mm=MinMaxScaler()
mm.fit(t)
scaler_t=mm.transform(t)
scaler_t=pd.DataFrame(scaler_t,columns=t.columns)
**#选择基于梯度下降的线性回归模型**
from sklearn.linear_model import LinearRegression
LR_reg=LinearRegression()
#进行拟合
LR_reg.fit(scaler_housing,target)
**#使用均方误差用于评价模型好坏**
from sklearn.metrics import mean_squared_error
preds=LR_reg.predict(scaler_housing) #输入数据进行预测得到结果
mse=mean_squared_error(preds,target) #使用均方误差来评价模型好坏,可以输出mse进行查看评价值
**绘图进行比较**
plot.figure(figsize=(10,7)) #画布大小
num=100
x=np.arange(1,num+1) #取100个点进行比较
plot.plot(x,target[:num],label='target') #目标取值
plot.plot(x,preds[:num],label='preds') #预测取值
plot.legend(loc='upper right') #线条显示位置
plot.show()
**#输出测试数据**
result=LR_reg.predict(scaler_t)
df_result=pd.DataFrame(result)
#df_result.to_csv("result.csv")
num=100
x=np.arange(1,num+1)
plot.figure(figsize=(10,7))
plot.plot(x,df_result[:num])
参考:https://github.com/mantchs/machine_learning_model/tree/master/Linear%20Regression
数据集可在这里下载。