【自然语言处理入门】03:利用线性回归对数据集进行分析预测(下)
来源:互联网 发布:青岛衣知她有限公司 编辑:程序博客网 时间:2024/06/05 11:50
上一篇中我们简单的介绍了利用线性回归分析并预测波士顿房价数据集,那么在这一篇中,将使用相同的模型来对红酒数据集进行分析。
1 基本要求
利用线性回归,对红酒数据集进行分析。数据集下载地址。
2 完整代码
#-*- coding: UTF-8 -*-# @Time : 2017/12/21 9:29# @Author : xiongzongyang# @Software: PyCharmimport pandas as pdfrom pandas import Series, DataFrameimport numpy as npfrom sklearn.linear_model import LinearRegression #线性回归from sklearn.metrics import mean_squared_errorimport matplotlib as mplimport matplotlib.pyplot as plt#读取数据def read_data(data_path="./data/"): test_data = pd.read_csv(data_path+"test.csv", header=None) train_data = pd.read_csv(data_path+"train.csv", header=None) return train_data,test_data#数据处理def deal_data(pd_data): #获取数据的行数,因为要出去字段名,所以要-1 row_cnt = pd_data.shape[0]-1 #计算列数,因为在读入数据时,没有指定分隔符,所以所有列数据都是作为一列数据来读入的,因此在计算列数时,将读入的每一行按照;来分开 column_cnt = len(pd_data.iloc[0, 0].split(";")) #empty 会创建一个没有使用特定值来初始化的数组。给这些方法传递一个元组作为形状来创建高维数组: X = np.empty((row_cnt, column_cnt - 1)) Y = np.empty((row_cnt, 1)) column_name=pd_data.iloc[0, 0].split(";") #开始获取数据 for i in range(0, row_cnt): #逐一将每一行进行分割(按;空格分割) row_array = pd_data.iloc[i+1, 0].split(";") #x取前13个数据,X[i]是一个一维数组,则X相当于一个二维数组,Y同理 X[i] = np.array(row_array[0:-1]) #y取最后一个数据 Y[i] = np.array(row_array[-1]) return X, Y,column_name#把特征标准化为均匀分布def uniform_norm(X): X_max = X.max(axis=0) X_min = X.min(axis=0) return (X - X_min) / (X_max - X_min), X_max, X_min#实现线性回归#画图def draw(pred,test_Y): t = np.arange(len(pred)) mpl.rcParams['font.sans-serif'] = [u'simHei'] mpl.rcParams['axes.unicode_minus'] = False plt.figure(facecolor='w') plt.plot(t, test_Y, 'r-', lw=2, label=u'true value') plt.plot(t, pred, 'b-', lw=2, label=u'estimated') plt.legend(loc='best') plt.title(u'wine quality', fontsize=18) plt.xlabel(u'case id', fontsize=15) plt.ylabel(u'quality', fontsize=15) plt.grid() plt.show()#模型评估def evaluate(unif_train_X,train_Y,unif_test_X,test_Y): print("训练集上效果评估:") pred_train = model.predict(unif_train_X) print("R^2系数 ", model.score(unif_train_X, train_Y)) print("均方误差 ", mean_squared_error(train_Y, pred_train)) print("\n测试集上效果评估 :") r2 = model.score(unif_test_X, test_Y) print("R^2系数 ", r2) pred = model.predict(unif_test_X) print("均方误差 ", mean_squared_error(test_Y, pred))#主函数if __name__ == "__main__": #读取数据 train_data,test_data=read_data() #数据处理 train_X, train_Y,column_name=deal_data(train_data) # print(train_X.shape) # print(train_Y.shape) test_X, test_Y,column_name=deal_data(test_data) # print(test_X.shape) # print(test_Y.shape) #把特征标准化为均匀分布 unif_train_X, max_X, min_X = uniform_norm(train_X) unif_test_X = (test_X - min_X) / (max_X - min_X) #实现线性回归 model = LinearRegression() model.fit(unif_train_X, train_Y) #在训练集上预测 pred_train = model.predict(unif_train_X) #在测试集上预测 pred = model.predict(unif_test_X) #画图 draw(pred,test_Y) #模型评估 evaluate(unif_train_X,train_Y,unif_test_X,test_Y)
注意:本数据集中,每一列都有列名,因此在数据预处理的过程中要去掉。
3 实验结果
4 实验小结
结果这两个实验可以看出,一般数据分析处理流程如下图所示。
graph LR数据读取-->数据预处理选择模型-->训练模型数据预处理-->训练模型训练模型-->测试模型测试模型-->模型评估
阅读全文
0 0
- 【自然语言处理入门】03:利用线性回归对数据集进行分析预测(下)
- 【自然语言处理入门】03:利用线性回归对数据集进行分析预测(上)
- 【自然语言处理入门】01:利用jieba对数据集进行分词,并统计词频
- 利用python进行数据分析 移动数据系数与线性回归(P366)
- 数据挖掘-diabetes数据集分析-糖尿病病情预测_线性回归_最小平方回归
- 【spark】使用线性回归对葡萄酒质量进行预测
- 自行编写线性回归对房价进行预测
- 利用R进行多元线性回归分析
- 基于spark用线性回归(linear regression)进行数据预测
- 分别用普通线性回归、岭回归、Lasso回归对boston房价进行预测,比较效果
- 线性回归分析及预测
- 利用LSTM对股票的收盘价进行回归预测
- 集成模型(回归)对Boston数据进行训练并对数据做出预测
- python 线性回归 预测数据
- 用线性回归进行糖尿病预测
- 利用回归树对Boston房价进行预测,并对结果进行评估
- 利用matlab中的函数进行线性回归分析
- 利用matlab中的函数regress进行线性回归分析
- 宾馆房间 hotelroom
- 驾校自动预约
- nsq
- 文件上传
- 隐马尔科夫模型——维特比算法
- 【自然语言处理入门】03:利用线性回归对数据集进行分析预测(下)
- Qt Creator 3.5 导入现有工程
- mybatis传入混合参数(多个不同类型的参数)
- iptables
- 股票数据分析
- 空间配置器
- Android Studio 下载与安装教程(最简单版)
- go语言的命令行库
- [Unity]用shader实现画面呈圆形缩放的效果。