> 以下内容是我在学习https://blog.csdn.net/mingxiaod/article/details/85938251 教程时遇到不懂的问题自己查询并理解的笔记,由于sklearn版本更迭改动了原作者的代码,如有理解偏差欢迎指正。
1. np.linspace
np.linspace(1,10) 在numpy中生成一个等差数列,可以加三个参数,np.linspace(1,10,10)在是两个参数时默认生成五十个数字的等差数列,第一第二哥数字分别代表数列的开头和结尾,如果是三哥参数,第三个参数代表等差数列的长度,既可以生成一个长度为10数字开头为1结尾为10的等差数列(1,2,3,4,5,6,7,8,9,10)
2. plt.subplot(nrows, ncols, index, **kwargs)
plt.subploy(2,3,5)这个代码的核心意思就是使用”整数来描述子图的位置信息“,顾名思义就是在一个画布中画多个图片,第一个参数nrows代表你把画布分为多少行,ncols代表你把画布分为多少列,index就更好理解了,它的意思就是接下来要画的图的索引位置,比如(2,3,5)他代表的意思就是把一张空白的画布分为两行,三列。六个位置区域,第三个索引参数一般就是从左上角开始到右下角依次编号(如下图),我查阅资料的时候有的博主强行机器翻译官方文档,并注明第三个参数不能大于10,其实不然,官方的意思是index<= nrows*ncols,也就是索引数字不能大于已有的画布分割数量。还有就是(2,3,5)与(235)效果等同,至于第三个参数**kwargs,作用是设置子图类型,极点图或线型图。
3.np.delete(x_data,abnormal_data,axis = 0)
第一个参数代表要处理的数据矩阵,第二个参数代表在什么位置处理(一般为一维数组),第三个参数 0 代表删除所在列,1代表删除所在行。
1 from sklearn import preprocessing 2 from sklearn.datasets import load_boston 3 from sklearn.metrics import r2_score 4 from sklearn.linear_model import LinearRegression 5 from sklearn.model_selection import train_test_split 6 import matplotlib.pyplot as plt 7 import numpy as np 8 9 #数据初始化 10 dataset = load_boston() 11 x_data,y_data=load_boston(return_X_y = True) #导入数据,x_data为特征变量、y_data为目标值 12 print("--------------'''获取自变量数据的形状'''--------------") 13 print(x_data.shape) 14 print(y_data.shape) 15 name_data = dataset.feature_names #导入特证名 16 17 #数据可视化 18 for i in range(len(name_data)): 19 plt.scatter(x_data[:,i],y_data,s = 20,marker = '<',c = 'r') 20 plt.title(name_data[i]) 21 plt.show() 22 #处理异常数据 23 abnormal_data = [] 24 for i in range(len(y_data)): 25 if y_data[i] == 50: 26 abnormal_data.append(i)#存储异常值的下标; 27 x_data = np.delete(x_data,abnormal_data,axis = 0)#删除值为y值为50的特征变量所在行 28 y_data = np.delete(y_data,abnormal_data,axis = 0)#删除值为y值为50的特征值所在行 29 print("------检测-------") 30 print(x_data.shape) 31 print(y_data.shape) 32 33 abnormal_title = [] 34 for i in range(len(name_data)): 35 if name_data[i] == 'RM' or name_data[i] =='PTRATIO'or name_data[i] == 'LSTAT': 36 continue 37 else: 38 abnormal_title.append(i)#存储不相关数据特证名下标 39 x_data = np.delete(x_data,abnormal_title,axis = 1)#删除不相关数据所在列 40 print("--------------'''输出有效数据形状'''--------------") 41 print(x_data.shape) 42 print(y_data.shape) 43 44 #数据分割 45 x_train,x_test = train_test_split(x_data,test_size=0.2,random_state=0) 46 y_train,y_test = train_test_split(y_data,test_size=0.2,random_state=0) 47 print("--------------'''输出实验数据长度'''--------------") 48 print(len(x_train)) 49 print(len(x_test)) 50 print(len(y_train)) 51 print(len(y_test)) 52 53 #数据归一化(无量纲化处理β=(x-min(x))/max(x)-min(x),将数据归集到0~1之间) 54 min_max_scaler = preprocessing.MinMaxScaler() 55 x_test = min_max_scaler.fit_transform(x_test) 56 x_train = min_max_scaler.fit_transform(x_train) 57 y_train = min_max_scaler.fit_transform(y_train.reshape(-1,1)) 58 y_test = min_max_scaler.fit_transform(y_test.reshape(-1,1))#转化为一列行自动确认 59 #模型训练和评估 60 lr = LinearRegression() 61 lr.fit(x_train,y_train) 62 lr_y_predict = lr.predict(x_test) 63 #使用r2_score预测样本 64 score = r2_score(y_test, lr_y_predict) 65 print("样本预测得分:{}".format(score))
输出结果:
--------------'''获取自变量数据的形状'''-------------- (506, 13) (506,) ------检测------- (490, 13) (490,) --------------'''输出有效数据形状'''-------------- (490, 3) (490,) --------------'''输出实验数据长度'''-------------- 392 98 392 98 样本预测得分:0.7091901425426