它该是做分类还是做回归,哪部分该做分类,哪部分该做回归,哪部分该做优化,它们的目标值分别是什么。
再挑影响因素,哪些和分类有关的影响因素,哪些和回归有关的影响因素,哪些和优化有关的影响因素。
对于线性回归来说,
一、导入需要的所有模块和包
#引入所需要的全部包fromsklearn.model_selectionimporttrain_test_split#数据划分的类,用于交叉验证fromsklearn.linear_modelimportLinearRegression#线性回归的类fromsklearn.preprocessingimportStandardScaler#数据标准化importnumpyasnpimportmatplotlibasmplimportmatplotlib.pyplotaspltimportpandasaspdfrompandasimportDataFrameimporttime加载数据
#加载数据path1=''df=pd.read_csv(path1,sep=';',low_memory=False)#没有混合类型的时候可以通过low_memory=F调用更多内存,加快效率)查看一下数据和格式
df.head(10)#查看一下前10行数据#查看格式信息df.info()获取x与y
数据集拆分成训练集和测试集
##对数据集进行测试集合训练集划分#X:特征矩阵(类型一般是DataFrame)#Y:特征对应的Label标签(类型一般是Series)#test_size:对X/Y进行划分的时候,测试集合的数据占比,是一个(0,1)之间的float类型的值#random_state:数据分割是基于随机器进行分割的,该参数给定随机数种子;给一个值(int类型)的作用就是保证每次分割所产生的数数据集是完全相同的X_train,X_test,Y_train,Y_test=train_test_split(X,Y,test_size=0.2,random_state=0)#看一下训练集和测试集的样本量print(X_train.shape)print(X_test.shape)print(Y_train.shape)标准化/归一化,连续型做标准化,离散型做归一化,视情况而做
#fit是求均值和方差,transform是用求出来的均值-求出来的方差,二者可以结合ss=StandardScaler()#将数据标准化,创建了标准化后的模型对象,Normalization为归一化拟合,标准化,fit与transfoem可以拆成两步写
#训练集标准化,测试集标准化X_train=ss.fit_transform(X_train)#训练模型并转换训练集X_test=ss.transform(X_test)#直接使用在模型构建数据上进行一个数据标准化操作(测试集),为的是让测试集和训练集的均值和方差是一致的模型训练,预测结果
##拟合,模型训练lr=LinearRegression(fit_intercept=True)#线性模型对象构建,是否包含截距项lr.fit(X_train,Y_train)##拟合,训练模型##模型校验y_predict=lr.predict(X_test)##预测结果查看拟合优度,即R方
print("训练集上R2:",lr.score(X_train,Y_train))print("测试集上R2:",lr.score(X_test,Y_test))#mse=np.average((y_predict-Y_test)**2)#rmse=np.sqrt(mse)#print("rmse:",rmse)