" id="b1img" alt="米课”N+1“思维建站-非官方免费技术支持,Wordpress/Zencart/Opencart建站、SEO" title="米课”N+1“思维建站-非官方免费技术支持,Wordpress/Zencart/Opencart建站、SEO">
  • " alt="米课”N+1“思维建站-非官方免费技术支持,Wordpress/Zencart/Opencart建站、SEO" title="米课”N+1“思维建站-非官方免费技术支持,Wordpress/Zencart/Opencart建站、SEO" />
  • " alt="Windows/Linux服务器运维技术支持 环境搭建、应用发布、服务器管理、虚拟化、云计算" title="Windows/Linux服务器运维技术支持 环境搭建、应用发布、服务器管理、虚拟化、云计算" />
  • " alt="高校/小型企业网络运维与建设免费技术支持,网络规划、网络优化、故障排除、网络管理" title="高校/小型企业网络运维与建设免费技术支持,网络规划、网络优化、故障排除、网络管理" />

别了网工——我的数据分析之路(四)机器学习入门(简单线性回归)

资源分享2018-05-19 itlogger阅读(122) 评论(0)
1.什么是机器学习
        机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能,研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
        机器学习主要的工作就是提取出有用的特征(比如卖西瓜的人的性别这个特征对判断西瓜是否是好瓜基本是没有用的,就不是一个好的特征),然后根据已有的训练数据(例如有一堆瓜,里面有好瓜也有坏瓜,并且已经标注(已有标签),也知道这些瓜的颜色、根蒂形状和敲击声音),构造从特征到标签的映射。
  • 特征:数据的属性(如瓜的颜色、根蒂形状、大小)
  • 标签:预测的结果(如甜、不甜)
2.机器学习的五个步骤
  • 提出问题
  • 理解数据
  • 数据清洗
  • 构建模型
  • 评估模型
3.三种线性相关性(分析两个变量间的关系,绘制散点图)
  • 正线性相关性:直线朝上
  • 负线性相关性:直线朝下
  • 非线性相关性:随机
4.协方差:两个变量的相关性程度
(1)两个变量的相关性方向:>0正线性相关,<0负线性相关
(2)相关性性程度
变量的变化幅度影响协方差
如何消除?——>相关系数
5.相关系数
称为随机变量X和Y的(Pearson)相关系数。相关系数是标准后的协方差,表示两个变量每单位的相关性程度。
r>0:正相关
r<0:负相关
r=0:无关
0.6<r<1 强相关
0.3-0.6 中等程度相关
0-0.3 弱相关性
6.相关系数矩阵
相关矩阵中每一个值都是代表原矩阵中各列之间的相关系数(相关矩阵为方阵,阶数为原矩阵的列数),对角线上都是原矩阵各列与自身的相关系数,所以对角线的值均为1。
python:corrr函数
7.简单线性回归
  • 最佳拟合线Linear Regression
在散点图上画一条穿过这些点的直线,使这条直线尽量地接近这些点。
  • 回归方程:y=a+bx,a:截距,b回归系统,用线性回归寻找最佳拟合线。
  • 预测值:用直线估计出的值
  • 一个点的误差=实际值-预测值
  • 误差平方和SSE=∑(实际值-预测值)^2
  • 利用最小二乘法法则估计线性回归方程
利用样本数据,通过使因变量的观测值与因变量的预测值之间的离差达到最小
8.如何评估模型准确度(判定系数为估计的回归方程提供了一个拟合优度的度量)
  • 误差平方和SSE,会因为数据点的多少影响评价结果,数据点越大,值越大
  • y的总波动=∑(y实际值-y平均值)^2
  • 误差平方和/总波动 :表示有多百分比的y波动没有被回归线描述
  • 决定系数R平方=1-误差平方和/总波动
(1)回归线拟合程度:有多少百分比的y波动可以由回归线来描述(x的波动变化)
(2)值大小,越高回归模型越精确
9.如何理解相关关系与因果关系?
事情的发生是一个复杂系统,多因素造成。研究发现相关关系,再进一步确认是否存在因果关系
10.python实现方法
python机器学习包sklearn(scikiet-learn)
from collections import OrderedDict
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
#1.提出问题:学习时间与成绩的关系?
examDict={‘time’:[0.5,0.75,1,1.25,1.5,1.75,1.75,2,2.25,2.5,2.75,3,3.25,3.5,4,4.25,4.5,4.75,5,5.5],’score’:[10,22,13,43,20,22,33,50,62,48,55,75,62,73,81,76,64,82,90,93]}
examOrderDict=OrderedDict(examDict)
examDf = pd.DataFrame(examOrderDict)
#特征
exam_X=examDf.loc[:,’time’]
#标签
exam_y=examDf.loc[:,’score’]
#画出散点图
plt.scatter(exam_X,exam_y,color=’b’,label=’exam data’)
plt.xlabel(“Hours”)
plt.ylabel(“Score”)
#plt.rc
#plt.show()
#建立训练数据和测试数据
X_train,X_test,y_train,y_test = train_test_split(exam_X,exam_y,test_size=.2,train_size=.8)
#输入数据大小
print(‘原始数据特征:’,exam_X.shape,’训练数据特征:’,X_train.shape,’测试数据特征’,X_test.shape)
print(‘原始数据标签:’,exam_y.shape,’训练数据标签:’,y_train.shape,’测试数据标签’,y_test.shape)
#导入线性回归包
from sklearn.linear_model import LinearRegression
#创建模型
model=LinearRegression();
#训练模型
X_train2 = X_train.values.reshape(-1,1)
y_train2 = y_train.values.reshape(-1,1)
model.fit(X_train2,y_train2)
#截距
a = model.intercept_
#回归系数
b = model.coef_
print(‘最佳拟合线:y=’+str(a)+’x+’+str(b))
#plt.scatter(exam_X,exam_y,color=’b’,label=’exam data’)
plt.xlabel(“Hours”)
plt.ylabel(“Score”)
exam_score = [];
print (b[0])
for x1 in exam_X:
y1 = a * x1 + b[0]
exam_score.append(y1)
#画出最佳拟合线
plt.plot(exam_X, exam_score, “red”)
#plt.rc
plt.show()

转载请注明 :IT樵客
文章地址:http://www.itlogger.com/res/2463.html
标签:
相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注