机器学习task1

装解释器(也就是python)

用来解释脚本语言python的一个玩意

当你写几句python代码用记事本,然后保存为py后缀然后直接用解释器解释就可以得到相应结果。

下载安装步骤

1.打开Python官网,点download中的windows
打开WEB浏览器访问http://www.python.org/download/
下载exe后缀的可执行文件,根据自己系统选择32位还是64位。

在这里插入图片描述
双击打开后,选中Customize installaion, 要记得勾上add python to Path 选项,意思是把Python的安装路径添加到系统环境变量的Path变量中。然后选择自定义路径进行安装
在这里插入图片描述
这一步是必须的
在这里插入图片描述
装好了就可以在对应安装位置运行解释器,解释py代码了,如果你想在任何位置都可以解释的话,就需要设计一下环境变量,告诉计算机你把py解释器藏哪了。

方法如下:

右键点击”计算机”,然后点击”属性” 然后点击”高级系统设置” 选择”系统变量”窗口下面的”Path”,双击即可!

然后在”Path”行,添加python安装路径即可(我的D:\Python32),所以在后面,添加该路径即可。ps:记住,路径直接用分号”;”隔开!
最后设置成功以后,在cmd命令行,输入命令”python”,就可以有相关显示。

装IDE(这里以PyCharm举例)

直接从官网下载即可,这个没什么讲究,下载community版本的,下载成功后自定义安装即可。
然后可以改改背景色字体大小什么的,本人用的是推荐背景以及22的字体,效果如下:
在这里插入图片描述
然后新建工程
在这里插入图片描述
建立完成后,在项目文件下右键新建python file,然后随便写句helloworld
在控制台可以看到打印信息,到此为止,环境和IDE均安装完成

最简单线性回归

import pandas as pd
from io import StringIO

from sklearn import linear_model

import matplotlib.pyplot as plt


# 房屋面积与价格历史数据(csv文件)
csv_data = 'square_feet,price\n150,6450\n200,7450\n250,8450\n300,9450\n350,11450\n400,15450\n600,18450\n'
# 读入dataframe
df = pd.read_csv(StringIO(csv_data))
print(df)


# 建立线性回归模型
regr = linear_model.LinearRegression()

# 拟合
regr.fit(df['square_feet'] .values.reshape(-1, 1), df['price']) # 注意此处.reshape(-1, 1),因为X是一维的!
# 不难得到直线的斜率、截距
a, b = regr.coef_, regr.intercept_

# 给出待预测面积
area = 238.5

# 方式1:根据直线方程计算的价格
print(a * area + b)

# 方式2:根据predict方法预测的价格
#print(regr.predict(area))

# 画图
# 1.真实的点
plt.scatter(df['square_feet'], df['price'], color='blue')

# 2.拟合的直线
plt.plot(df['square_feet'], regr.predict(df['square_feet'].values.reshape(-1,1)), color='red', linewidth=4)

plt.show()

在过程中可能碰到的两个问题

1.缺库

解决方案:
在这里插入图片描述
点击右边的加号
在这里插入图片描述
选择或者搜索你要的库,点击install即可。

2.函数报错(这句代码得改一下)
# 2.拟合的直线
plt.plot(df['square_feet'], regr.predict(df['square_feet'].values.reshape(-1,1)), color='red', linewidth=4)

成功运行结果如下

在这里插入图片描述
到此为止,基础已经差不多了。

稍微复杂一点的线性回归

# coding: utf-8

# ### 创建数据集并提取特征和标签

# In[1]:


#  导入相关模块
from collections import OrderedDict
import pandas as pd


# In[2]:


# 数据集
examDict={
    '学习时间':[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],
    '分数':[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)


# In[3]:


examDf.head()


# In[4]:


# 提取特征和标签 
# 特征features
exam_X=examDf.loc[:,'学习时间']
# 标签labes
exam_y=examDf.loc[:,'分数']


# ### 描绘原始数据图像

# In[5]:


# 绘制散点图
import matplotlib.pyplot as plt
# 画图时用于显示中文字符
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # SimHei是黑体的意思

# 散点图
plt.scatter(exam_X,exam_y,color='b',label='考试数据')

# 添加图标标签
plt.xlabel('时间')
plt.ylabel('分数')
# 显示图像
plt.show()


# ### 建立训练数据和测试数据

# In[6]:


'''
train_test_split是交叉验证中常用的函数,功能是从样本数据中随机按比例选取训练数据(train)和测试数据(test)
第一个参数:所要划分的样本特征
第二个参数:所要划分的样本标签
train_size:训练数据占比,如果是整数就是样本的数量
'''
from sklearn.cross_validation import train_test_split

# 建立训练数据和测试数据
X_train,X_test,y_train,y_test = train_test_split(exam_X,exam_y,train_size=0.8)

# 输出数据大小
print('原始数据特征:',exam_X.shape,
      ',训练数据特征:',X_train.shape,
      ',测试数据特征:',X_test.shape)

print('原始数据标签:',exam_y.shape,
      ',训练数据标签:',y_train.shape,
      ',测试数据标签:',y_test.shape)


# ### 描绘训练数据和测试数据图像

# In[7]:


# 绘制散点图
plt.scatter(X_train,y_train,color='blue',label='训练数据')
plt.scatter(X_test,y_test,color='red',label='测试数据')

# 添加图标标签
plt.legend(loc=2)
plt.xlabel('学习时间')
plt.ylabel('分数')
# 显示图像
plt.show()


# ### 构建训练模型

# In[8]:


# 第1步:导入线性回归
from sklearn.linear_model import LinearRegression
# 第2步:创建模型:线性回归
model = LinearRegression()
# 第3步:训练模型
model.fit(X_train,y_train)


# In[9]:


'''
上面的代码出现报错,报错的原因是输入的特征只有一个,
sklearn要求输入的特征必须是二维数组的类型,但是因为我们目前只有1个特征,
所以需要用array.reshape(-1, 1)转行成二维数组的类型。
reshape行的参数是-1,就会根据所给的列数,自动按照原始数组的大小形成一个新的数组
'''
# 将训练数据特征转化成二维数组XX行*1列形式
X_train = X_train.values.reshape(-1,1)
# 将测试数据特征转化为二维数组XX行*1列
X_test = X_test.values.reshape(-1,1)

# 第1步:导入线性回归
from sklearn.linear_model import LinearRegression
# 第2步:创建模型:线性回归
model = LinearRegression()
# 第3步:训练模型
model.fit(X_train,y_train)


# ### 最佳拟合线

# In[10]:


'''
拟合最佳的直线:z=a+bx
截距intercept:a
回归系数:b
'''

# 截距
a = model.intercept_
# 回归系数
b = model.coef_

print('最佳拟合线:截距a=',a,',回归系数b=',b)


# In[11]:


# 绘图
# 训练数据散点图
plt.scatter(X_train,y_train,color='blue',label='训练数据')

# 训练数据的预测值
y_train_pred = model.predict(X_train)
# 绘制最佳拟合线
plt.plot(X_train,y_train_pred,color='black',linewidth=3,label='最佳拟合线')

# 添加图标标签
plt.legend(loc=2) 
plt.xlabel='时间'
plt.ylabel='得分'
# 显示图像
plt.show()


# In[12]:


# 相关系数:corr返回结果是一个数据框,存放的是相关系数矩阵
rDf = examDf.corr()
print('相关系数矩阵:')
rDf


# ### 评估模型

# In[13]:


# 线性回归的score方法得到的是决定系数R平方
# 评估模型:决定系数R平方
model.score(X_test,y_test)


# In[14]:


# 绘图
# 训练数据散点图
plt.scatter(X_train,y_train,color='blue',label='训练数据')

# 训练数据的预测值
y_train_pred = model.predict(X_train)
# 绘制最佳拟合线
plt.plot(X_train,y_train_pred,color='black',linewidth=3,label='最佳拟合线')

# 测试数据散点图
plt.scatter(X_test,y_test,color='red',label='测试数据')

# 添加图标标签
plt.legend(loc=2) 
plt.xlabel='时间'
plt.ylabel='得分'
# 显示图像
plt.show()

将上述代码跑通,并懂了含义即可。

CNN

看下面这个教程

https://mooc.study.163.com/smartSpec/detail/1001319001.htm

代码道理一定要懂。
然后找个demo跑通。

补充

需要理解的知识

1.最小二乘法一定要懂
2.机器学习有监督和无监督的区别以及应用

需要上述所提到资料的评论自己邮箱。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值