机器学习入门-线性回归

将未知问题转化为已知模型能解决的问题

一、建模五部曲

确定场景类型-定义损失函数-特征提取-确定模型形式-评估模型
在这里插入图片描述

二、具体步骤

import os
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn import linear_model

1、读取数据

def read_data(path):
	data=pd.read_csv(path)
	return data

2、训练模型

def train_damodel(x,y):
	"""
	参数 x:DataFrame,特征
		 y:Dataframe,标签
	返回 model :LinearRegression ,训练好的模型。
	"""
	#创建一个线性回归模型
	model =linear_model.LinearRegression()
	#训练模型,估计模型参数
	model.fit(x,y)
	return model

3、模型评估

def evaluate_model(model,x,y):
	"""
	计算模型的均方差和决定系数
	参数:
		model:LinearRegression,训练完的线性模型
		x,Dataframe,特征
		y,DataFrame,标签
	返回:
		mse: np.float ,均方差 mean squared error
		score: np.float,决定系数,R²
		a: np.float,系数
		b: np.float,截距
	"""
	mse = np.mean(
			(model.predict(x)-y)**2)
	score = model.score(x,y)
	a = model.coef_
	b = model.intercept_
	return mse, score ,a ,b

4、可视化预测效果

def visualize_model(model,x,y):
	"""
	模型预测效果可视化
	"""
	#创建一个图形框
	fig=plt.figure(figsize=(8,6),dpi=80)
	#在画框中画图
	ax=fig.add_subplot(111)
	ax.set_xlabel('特征')
	ax.set_ylabel('标签')
	#画出原始数据散点图,蓝色区分
	ax.scatter(x,y,color='b')
	#画出预测值,红色区分,图例标识模型公式
	ax.plot(x,model.predict(x),color='r',
			labele=u'$y = %.3fx + %.3f' % (a,b))
	plt.legend(shadow=True)
	plt.show()

5、封装运行模型

def run_model(data):
	"""
	参数: data,DataFrame,训练数据
	"""
	#定义特征
	features  = ["x"]
	label = ["y"]
	#产生并训练模型
	model=train_model(data[features],data[label])
	#评价模型效果
	mse,score,a,b=evaluate_model(model,data[features],data[label])
	print('MSE的值为{}。'.format(mse))
	print('R²的值为{}。'.format(score))
	print('系数为{}。'.format(a))
	print('截距为{}。'.format(b))
	#图形可视化
	visualize_model(model,data[features],data[label])

6、运行脚本并输出

if __name__ = "__main__":
	home_path = os.path.abspath(".")
	if os.name == 'nt':
		data_path ='{}\\sample_csv'.format(home_path)	
	else:
		data_path ='{}/sample_csv'.format(home_path)
	data=read_data(data_path)
	run_model

注意事项

1、data[[‘x’]]和data.x 的区别
data[[‘x’]]是多行1列的array,和data.x的区别:data[[‘x’]]是多行1列的array,data.x是1行多列的 array>

2、np.array 转化成DataFrame 需注意花括号
pd.DataFrame({“x”:x,“y”:y})
此处双引号内的x,y为列名称

3、获取当前工作空间的绝对地址
import os
print(os.path.abspath(".")) #当前目录的绝对路径(%pwd)
print(os.path.abspath(r"…")) #上级目录的绝对路径

4、对于linear_model.LinearRegression中的参数为
系数:model.coef_,
截距:model.intercept_

5、此处的模型训练数据和验证数据都是使用的x,在实际应用中应注意将原始数据拆分为训练集和验证集,并在相应的模块中修改。

四、小结

1、初步学习使用Python训练模型,了解了建模的基本步骤及形式,但是不够熟练还需要多加练习。
2、将程序模块化,思路更加清晰。
3、编译模块时,注释要清楚,便于有阅读。
4、还应加深对模型的深度学习,实际应用中还需要更多的内容支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值