Python机器学习(一)

Python机器学习(一)

今天数据分析课程开始讲解关于机器学习的知识点了,所以我开始继续给大家更新啦,一方面是自己的课下总结,一方面也希望对各位小码提供帮助。

1.机器学习算法分类

按照目前掌握的机器学习理论,给大家讲解的机器学习理论大概可以分为如下两类:

  1. 教师指导下的学习——是指数据数据已经有明确分类标签的学习。
  2. 无教师指导的学习——是指数据未经分类的学习。
    教师指导下的学习的目标有两个:分类和回归。无教师指导的学习的目标就是对相关的观测数据进行分组,称为聚类或聚类分析。

2.训练数据和测试数据

教师指导下的学习算法实现中,通常为了验证算法的有效性,我们把数据分为两组,一组用来对算法的各项参数进行求解,称为训练,数据叫训练数据;另外一组用来验证算法的有效性,称为测试,数据叫测试数据。
如果一个算法对训练数据效果比较差,称这个算法
是欠拟合。
如果一个算法对训练数据效果很好,但对测试数据效果很差,称这个算法是过拟合。
如果一个算法对训练数据和测试数据效果都很好,称这个算法是泛化性好。
在数据比较缺少的情况下,为了验证算法的有效性,可以采取交差验证的方法,例如将一个数据集分成随机分成五份,然后将其中的一份作测试集,其余四份作训练集进行训练和测试。

3.线性回归

对于一组数据寻找相互之间线性关系的方法叫线性
回归。例如,一组关于披萨饼的直径与价格关系的数据:
在这里插入图片描述
(1)将数据用Python进行可视化操作

#线性回归
import matplotlib.pyplot as plt
x=[[6],[8],[18],[14],[18]]
y=[[7],[9],[15],[17.5],[18]]
plt.rcParams['font.sans-serif']=['SimHei']
plt.plot(x,y,'o')
plt.xlabel("披萨饼直径")
plt.ylabel('披萨饼价钱')
# 出现格
plt.grid(True)
plt.show()

运行结果:
在这里插入图片描述
(2)用线性回归预测直径12英尺的披萨的价格

# 回归预测
from sklearn.linear_model import LinearRegression
x=[[6],[8],[18],[14],[18]]
y=[[7],[9],[15],[17.5],[18]]
model=LinearRegression()
model.fit(x,y)
price=model.predict([[12]])
print('12英寸披萨饼的价钱预测为:$%0.2f'%price[0][0])

运行结果:
在这里插入图片描述
(3)线性回归的线性模型

# 数据预测-线性模型
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
model=LinearRegression()
x=[[6],[8],[18],[14],[18]]
y=[[7],[9],[15],[17.5],[18]]
model.fit(x,y)
x_test=np.linspace(0,20,100).reshape((100,1))
y_test=model.predict(x_test).reshape((100,1))
plt.plot(x,y,'k.')
plt.plot(x_test,y_test,'r-')
plt.xlabel('Diameter in pizza')
plt.ylabel('Price in pizza')
plt.grid(True)
plt.axis([0,20,0,20])
plt.show()

(4)用R方对模型进行评估
R 方测量了一个模型的预测值对响应变量好坏度,通常
它的值在 0 和 1 之间,值越大说明模型越好。

from sklearn.linear_model import LinearRegression
import numpy as np
model=LinearRegression()
x=np.array([[6],[8],[10],[14],[18]])
y=np.array([[7],[9],[13],[17.5],[18]])
model.fit(x,y)
x_test=np.array([[8],[9],[11],[16],[12]])
y_test=np.array([[11],[8.5],[15],[18],[11]])
y_test=np.reshape(y_test,(np.size(y_test)))
y_pre=model.predict(x_test)
y_pre=np.reshape(y_pre,(np.size(y_pre)))
y_mean=np.mean(y_test)
s_tot=np.dot(y_test-y_mean,y_test-y_mean)
s_res=np.dot(y_test-y_pre,y_test-y_pre)
r2=1-s_res/s_tot
print(r2)

运行结果:
在这里插入图片描述
今天就暂且和大家分享这些吧,若上文有错误还望小码们指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柚子味的羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值