快速入门Python机器学习笔记

快速入门Python机器学习

matplotlib

快速入门Python机器学习笔记_第1张图片快速入门Python机器学习笔记_第2张图片实现一个简单的Matplotlib画图
第一步创建画布,第二步图像绘制,第三步图像展示

import matplotlib.pyplot as plt
#创建画布
plt.figure(figsize=(20,8),dpi=100)

#绘制图像
x=[1,2,3]
y=[4,5,6]
plt.plot(x,y)

#图像展示
plt.show()

快速入门Python机器学习笔记_第3张图片快速入门Python机器学习笔记_第4张图片快速入门Python机器学习笔记_第5张图片快速入门Python机器学习笔记_第6张图片快速入门Python机器学习笔记_第7张图片快速入门Python机器学习笔记_第8张图片

折线图绘制(添加x、y轴刻度、网格、添加描述信息)

快速入门Python机器学习笔记_第9张图片快速入门Python机器学习笔记_第10张图片

import matplotlib.pyplot as plt
#创建画布
plt.figure(figsize=(5,4),dpi=100)#figsize:指定图的长度,dpi:图像的清晰度

#绘制图像
x=[1,2,3,4,5,6]
y=[3,6,3,5,3,10]
plt.plot(x,y)

#图像保存
# plt.savefig("./data/test.png")#""内为保存路径

#图像展示
plt.show()

快速入门Python机器学习笔记_第11张图片案例:显示温度折线图

import matplotlib.pyplot as plt
import random
#准备x,y坐标的数据
x=range(60)#横轴生成60
y=[random.uniform(15,18)for i in x]#随机生成15-18的数据
#创建画布
plt.figure(figsize=(5,4),dpi=100)#figsize:指定图的长度,dpi:图像的清晰度

#绘制图像
plt.plot(x,y)

#图像保存
# plt.savefig("./data/test.png")#""内为保存路径

#图像展示
plt.show()

快速入门Python机器学习笔记_第12张图片生成自定义x,y轴

import matplotlib.pyplot as plt
import random
#准备x,y坐标的数据
x=range(60)
y=[random.uniform(15,18)for i in x]#随机生成15-18的数据
#创建画布
plt.figure(figsize=(5,4),dpi=100)#figsize:指定图的长度,dpi:图像的清晰度

#绘制图像
plt.plot(x,y)

#添加x,y轴刻度
y_ticks=range(40)
x_ticks=["11点{}分".format(i)for i in x]#生成一个自定义x轴刻度

plt.yticks(y_ticks[::5])#y轴每隔5个点显示一次
plt.xticks(x[::5],x_ticks[::5])#x轴每隔5个点显示一次

#图像保存
# plt.savefig("./data/test.png")#""内为保存路径

#图像展示
plt.show()

快速入门Python机器学习笔记_第13张图片添加网格信息显示
只需添加如下代码行

plt.grid(True,linestyle='--',alpha=0.5)#alpha为网格透明度

快速入门Python机器学习笔记_第14张图片添加描述信息

import matplotlib.pyplot as plt
import random
#准备x,y坐标的数据
x=range(60)
y=[random.uniform(15,18)for i in x]#随机生成15-18的数据
#创建画布
plt.figure(figsize=(5,4),dpi=100)#figsize:指定图的长度,dpi:图像的清晰度

#绘制图像
plt.plot(x,y)

#添加x,y轴刻度
y_ticks=range(40)
x_ticks=["11点{}分".format(i) for i in x]#生成一个自定义x轴刻度

plt.yticks(y_ticks[::5])#y轴每隔5个点显示一次
plt.xticks(x[::5],x_ticks[::5])#x轴每隔5个点显示一次



#网格添加
plt.grid(True,linestyle='--',alpha=0.5)#alpha为网格透明度

#添加描述
plt.xlabel("time")
plt.ylabel("temperature")
plt.title("一小时温度变化图",fontsize=20)#fontsize调整字体大小

#图像保存
# plt.savefig("./data/test.png")#""内为保存路径

#图像展示
plt.show()
print(x_ticks)

快速入门Python机器学习笔记_第15张图片

绘制多条折线及显示图例

import matplotlib.pyplot as plt
import random
#准备x,y坐标的数据
x=range(60)
y_shanghai=[random.uniform(15,18)for i in x]#随机生成15-18的数据
y_beijing=[random.uniform(1,5)for i in x]
#创建画布
plt.figure(figsize=(5,4),dpi=100)#figsize:指定图的长度,dpi:图像的清晰度

#绘制图像
plt.plot(x,y_shanghai,label="shanghai")
plt.plot(x,y_beijing,color='r',linestyle='--',label="beijing")

#显示图例
plt.legend(loc=1)#显示前需先定义label

#添加x,y轴刻度
y_ticks=range(40)
x_ticks=["11点{}分".format(i) for i in x]#生成一个自定义x轴刻度

plt.yticks(y_ticks[::5])#y轴每隔5个点显示一次
plt.xticks(x[::5],x_ticks[::5])#x轴每隔5个点显示一次

#网格添加
plt.grid(True,linestyle='--',alpha=0.5)#alpha为网格透明度

#添加描述
plt.xlabel("time")
plt.ylabel("temperature")
plt.title("一小时温度变化图",fontsize=20)#fontsize调整字体大小

#图像保存
# plt.savefig("./data/test.png")#""内为保存路径

#图像展示
plt.show()

快速入门Python机器学习笔记_第16张图片快速入门Python机器学习笔记_第17张图片快速入门Python机器学习笔记_第18张图片快速入门Python机器学习笔记_第19张图片

多个坐标系显示图像

快速入门Python机器学习笔记_第20张图片

import matplotlib.pyplot as plt
import random
#准备x,y坐标的数据
x=range(60)
y_shanghai=[random.uniform(15,18)for i in x]#随机生成15-18的数据
y_beijing=[random.uniform(1,5)for i in x]

#创建画布
#plt.figure(figsize=(5,4),dpi=100)#figsize:指定图的长度,dpi:图像的清晰度
fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(5,4),dpi=100)#nrows行数,ncols列数

#绘制图像
# plt.plot(x,y_shanghai,label="shanghai")
# plt.plot(x,y_beijing,color='r',linestyle='--',label="beijing")
axes[0].plot(x,y_shanghai,label="shanghai")
axes[1].plot(x,y_beijing,color='r',linestyle='--',label="beijing")

#显示图例
# plt.legend(loc=1)#显示前需先定义label
axes[0].legend(loc=1)
axes[1].legend(loc=1)

# #添加x,y轴刻度
y_ticks=range(40)
x_ticks=["11点{}分".format(i) for i in x]#生成一个自定义x轴刻度
#
# plt.yticks(y_ticks[::5])#y轴每隔5个点显示一次
# plt.xticks(x[::5],x_ticks[::5])#x轴每隔5个点显示一次
axes[0].set_xticks(x[::5])#添加第一幅图x轴
axes[0].set_yticks(y_ticks[::5])#添加第一幅图y轴
axes[0].set_xticklabels(x_ticks[::5])#添加第一幅图自定义x轴刻度

axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks[::5])

# #网格添加
# plt.grid(True,linestyle="--",alpha=0.5)#alpha为网格透明度
axes[0].grid(True,linestyle="--",alpha=0.5)
axes[1].grid(True,linestyle="--",alpha=0.5)

# #添加描述
# plt.xlabel("time")
# plt.ylabel("temperature")
# plt.title("一小时温度变化图",fontsize=20)#fontsize调整字体大小
axes[0].set_xlabel("time")
axes[0].set_ylabel("temperature")
axes[0].set_title("Temperature change from 11 to 12 noon in Shanghai",fontsize=10)

axes[1].set_xlabel("time")
axes[1].set_ylabel("temperature")
axes[1].set_title("Temperature change from 11 to 12 noon in Beijing",fontsize=10)

#图像保存
# plt.savefig("./data/test.png")#""内为保存路径

#图像展示
plt.show()

快速入门Python机器学习笔记_第21张图片

折线图应用场景

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
#准备数据
x=np.linspace(-10,10,1000)#从-10到10生成1000个数据
y=np.sin(x)

#创建画布
plt.figure(figsize=(5,4),dpi=100)#figsize:指定图的长度,dpi:图像的清晰度

#绘制函数图像
plt.plot(x,y)

#绘制网格
plt.grid()

#显示图像
plt.show()

快速入门Python机器学习笔记_第22张图片

绘制其他常见图形(散点图、柱状图、直方图、饼图)

快速入门Python机器学习笔记_第23张图片快速入门Python机器学习笔记_第24张图片快速入门Python机器学习笔记_第25张图片快速入门Python机器学习笔记_第26张图片快速入门Python机器学习笔记_第27张图片
散点图的绘制

import random
import matplotlib.pyplot as plt
#准备数据
x=range(60)
y=[random.uniform(0,100)for i in x]#随机生成0-100的数据

#创建画布
plt.figure(figsize=(5,4),dpi=100)#figsize:指定图的长度,dpi:图像的清晰度

#绘制函数图像
plt.scatter(x,y)

#绘制网格
plt.grid()

#显示图像
plt.show()

快速入门Python机器学习笔记_第28张图片柱状图绘制
快速入门Python机器学习笔记_第29张图片

import random
import matplotlib.pyplot as plt
#准备数据
movie_name=['雷神3','诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','追捕']
x=range(len(movie_name))
y=[73853,57767,22354,15969,8725,8716,8316]

#创建画布
plt.figure(figsize=(5,4),dpi=100)#figsize:指定图的长度,dpi:图像的清晰度

#绘制函数图像
plt.bar(x,y,color=['r','b','g','r','y','b','r'],width=0.5)

#x轴显示名称
plt.xticks(x,movie_name)

#绘制网格
plt.grid()

#加标题
plt.title("电影票房统计")
#显示图像
plt.show()

快速入门Python机器学习笔记_第30张图片

Numpy

快速入门Python机器学习笔记_第31张图片快速入门Python机器学习笔记_第32张图片快速入门Python机器学习笔记_第33张图片快速入门Python机器学习笔记_第34张图片快速入门Python机器学习笔记_第35张图片快速入门Python机器学习笔记_第36张图片快速入门Python机器学习笔记_第37张图片快速入门Python机器学习笔记_第38张图片

N维数组-ndarray介绍

快速入门Python机器学习笔记_第39张图片快速入门Python机器学习笔记_第40张图片快速入门Python机器学习笔记_第41张图片快速入门Python机器学习笔记_第42张图片快速入门Python机器学习笔记_第43张图片快速入门Python机器学习笔记_第44张图片快速入门Python机器学习笔记_第45张图片

快速入门Python机器学习笔记_第46张图片
快速入门Python机器学习笔记_第47张图片快速入门Python机器学习笔记_第48张图片

生成数组

快速入门Python机器学习笔记_第49张图片快速入门Python机器学习笔记_第50张图片

import numpy as np

ones=np.ones([4,8])#生成全为1的数组
print(ones)
zero=np.zeros_like(ones)#生成类似ones的全为0的数组
print(zero)

快速入门Python机器学习笔记_第51张图片np.array–深拷贝,np.asarray–浅拷贝
快速入门Python机器学习笔记_第52张图片在这里插入图片描述快速入门Python机器学习笔记_第53张图片

import numpy as np

linspace=np.linspace(0,100,11)#从0-100等间距生成11个数
print(linspace)

arange=np.arange(0,100,10)#从0-100每隔10生成一个数
print(arange)

logspace=np.logspace(0,2,3)#从10的零次方到10的二次方,生成三个数字
print(logspace)

快速入门Python机器学习笔记_第54张图片快速入门Python机器学习笔记_第55张图片

import numpy as np
import random

rand=np.random.rand(2,3)#从0-1随机生成两行三列的数据
print(rand)

print("")

uniform=np.random.uniform(low=1,high=10,size=(3,5))#从1-10随机生成三行五列的数据
print(uniform)

print("")

# randint=np.random.randint(low=1,high=10,size=(3,5))#从1-10随机生成三行五列的整数
randint=np.random.randint(1,10,(3,5))
print(randint)

快速入门Python机器学习笔记_第56张图片

生成均匀分布及显示

import numpy as np
import random
import matplotlib.pyplot as plt

#生成均匀分布的随机数
x1=np.random.uniform(-1,1,100)#从-1到1随机生成一个百数

#绘制画布
plt.figure(figsize=(10,10),dpi=100)

#绘制直方图
plt.hist(x=x1,bins=10)#x代表使用的数据,bin表示要划分多少组

#显示图像
plt.show()

纵轴表示该组有多少个数据,横轴表示数据的大小
快速入门Python机器学习笔记_第57张图片

★生成正态分布

快速入门Python机器学习笔记_第58张图片快速入门Python机器学习笔记_第59张图片快速入门Python机器学习笔记_第60张图片

import numpy as np
import random
import matplotlib.pyplot as plt

#生成正态分布数据
x=np.random.normal(1.75,1,100000000)#生成均值为1.75,方差为1的一亿个数据

#画布
plt.figure(figsize=(10,4),dpi=100)

#绘制
plt.hist(x,bins=1000)#分为1000组数据

#显示
plt.show()

快速入门Python机器学习笔记_第61张图片快速入门Python机器学习笔记_第62张图片

数组索引和形状修改

快速入门Python机器学习笔记_第63张图片

import numpy as np
import random
import matplotlib.pyplot as plt

#生成数据
stock_change=np.random.normal(0,1,(8,10))#随机生成均值为0标准差为1的八行十列数据
# print(stock_change)

#索引切片
x=stock_change[0:2,0:3]#取出前两行的前三列
#print(x)

快速入门Python机器学习笔记_第64张图片

import numpy as np
import random
import matplotlib.pyplot as plt

#生成数据
stock_change=np.random.normal(0,1,(4,5))#随机生成均值为0标准差为1的4行5列数据
# print(stock_change)

#形状改变
x=stock_change.reshape([5,4])#1.数组形状改为5行4列(reshape产生新变量)
# print(x)
y=stock_change.reshape([-1,10])#素组形状修改为两行10列
# print(y)

#stock_change.resize([5,4])#2.将原来数组改为5行4列(resize对原来变量进行修改)

stock_change.T#3.进行行列互换(数组#转置)
print(stock_change.T)

数据类型修改和数组去重

快速入门Python机器学习笔记_第65张图片快速入门Python机器学习笔记_第66张图片

import numpy as np
import random

#生成数据
stock_change=np.random.normal(0,1,(4,5))#随机生成均值为0标准差为1的4行5列数据
print(stock_change)

#类型修改
x=stock_change.astype(np.int32)#将数据改为Int32位数据
print(x)

y=stock_change.tostring()#将数据改为相应的字符串
print(y)

#数组去重
unique=np.unique(stock_change)
print(unique)

ndarray运算

快速入门Python机器学习笔记_第67张图片

逻辑运算

快速入门Python机器学习笔记_第68张图片

import numpy as np
import random

#生成数据
stock_change=np.random.normal(0,1,(8,10))#随机生成均值为0标准差为1的4行5列数据
# print(stock_change)

stock_c=stock_change[0:5,0:5]#取数据前五行的前五列

#逻辑判断
x=stock_c>1#对数据进行逻辑判断,True/False
# print(x)

#逻辑运算
stock_c[stock_c>0.5]=1#将数据中大于0.5的数变为1
print(stock_c)

在这里插入图片描述快速入门Python机器学习笔记_第69张图片

import numpy as np
import random

#生成数据
stock_change=np.random.normal(0,1,(8,10))#随机生成均值为0标准差为1的4行5列数据
# print(stock_change)

stock_c=stock_change[0:5,0:5]#取数据前五行的前五列

#逻辑判断
x=np.all(stock_c>0)#stock_c数组中所有的数均大于零则输出True,否则输出False
print(x)

y=np.any(stock_c>0)#stock_c数组中有大于零的数则输出为True,否则输出为False
print(y)

在这里插入图片描述

三元运算符

快速入门Python机器学习笔记_第70张图片

import numpy as np
import random

#生成数据
stock_change=np.random.normal(0,1,(8,10))#随机生成均值为0标准差为1的4行5列数据
# print(stock_change)

stock_c=stock_change[0:5,0:5]#取数据前五行的前五列

#三元运算符
x=np.where(stock_c>0,1,0)#将数组中大于零的数据返回1,反之为0
print(x)

y=np.where(np.logical_and(stock_c>-0.5,stock_c<0.5),1,0)
#将数组中大于-0.5且小于0.5的数据赋为1否则为0(逻辑与)
print(y)

z=np.where(np.logical_or(stock_c>-0.5,stock_c<0.5),1,0)
#将数组中大于-0.5且小于#0.5的数据赋为1否则为0(逻辑或)
print(z)

★统计运算 (最大值最小值均值方差)

快速入门Python机器学习笔记_第71张图片快速入门Python机器学习笔记_第72张图片

import numpy as np
import random

#生成数据
stock_change=np.random.normal(0,1,(4,5))#随机生成均值为0标准差为1的4行5列数据
# print(stock_change)

stock_c=stock_change[0:2,0:2]#取数据前五行的前五列
print(stock_c)

#统计运算
max=stock_change.max(axis=1)#生成每一行中最大值,axis=1为行,axis=0为列
print(max)

argmax=stock_c.argmax(axis=1)#生成每一行中最大值的位置
print(argmax)

快速入门Python机器学习笔记_第73张图片

★矩阵

快速入门Python机器学习笔记_第74张图片快速入门Python机器学习笔记_第75张图片快速入门Python机器学习笔记_第76张图片快速入门Python机器学习笔记_第77张图片快速入门Python机器学习笔记_第78张图片在这里插入图片描述快速入门Python机器学习笔记_第79张图片快速入门Python机器学习笔记_第80张图片快速入门Python机器学习笔记_第81张图片

import numpy as np

arr=np.array([1,2,3,4])

arr=arr+1
print(arr)

arr=arr/2
print(arr)

在这里插入图片描述

数组与数组的运算

快速入门Python机器学习笔记_第82张图片快速入门Python机器学习笔记_第83张图片快速入门Python机器学习笔记_第84张图片快速入门Python机器学习笔记_第85张图片

★矩阵运算

快速入门Python机器学习笔记_第86张图片

import numpy as np
#准备数据
a=np.array([[80,86],[82,80],[85,78],[90,90],[86,82],[82,90],[78,80],[92,94]])
b=np.array([[0.7],[0.3]])

#矩阵运算
matmul=np.matmul(a,b)#表示矩阵相乘
print(matmul)

dot1=np.dot(a,b)#表示矩阵相乘,且支持点乘
dot2=np.dot(10,b)
print(dot1)
print(dot2)

Pandas

基本介绍

快速入门Python机器学习笔记_第87张图片快速入门Python机器学习笔记_第88张图片快速入门Python机器学习笔记_第89张图片快速入门Python机器学习笔记_第90张图片快速入门Python机器学习笔记_第91张图片快速入门Python机器学习笔记_第92张图片快速入门Python机器学习笔记_第93张图片快速入门Python机器学习笔记_第94张图片

import numpy as np
import pandas as pd
import random
#导入数据
stock_change=np.random.normal(0,1,(10,5))#随机生成均值为0方差为1的十行五列数据

#使用pandas进行列表结构生成
Data=pd.DataFrame(stock_change)
print(Data)

print(Data.shape)#显示数据几行几列
print(Data.shape[0])#显示数据有几行
print(Data.shape[1])#显示数据有几列

#构建行索引序列
stock_name=["stock{}".format(i+1) for i in range(Data.shape[0])]#增加行索引序列
# print(stock_name)

#添加行索引
# pd.DataFrame(stock_change,index=stock_name)#index表示行索引,注意此时变量为数组
# print(index)

#构建列索引序列C
stock_time=pd.date_range(start='2021.4.23',periods=Data.shape[1],freq='B')#freq为递进单位,'B'为略过周六日

#添加行、列索引
index_columns=pd.DataFrame(stock_change,index=stock_name,columns=stock_time)#columns为列索引
print(index_columns)

快速入门Python机器学习笔记_第95张图片

N维数组

★DataFrame设置索引(二维数组)

快速入门Python机器学习笔记_第96张图片
快速入门Python机器学习笔记_第97张图片快速入门Python机器学习笔记_第98张图片快速入门Python机器学习笔记_第99张图片快速入门Python机器学习笔记_第100张图片快速入门Python机器学习笔记_第101张图片快速入门Python机器学习笔记_第102张图片

import numpy as np
import pandas as pd
import random
#导入数据
stock_change=np.random.normal(0,1,(10,5))#随机生成均值为0方差为1的十行五列数据

#使用pandas进行列表生成
Data=pd.DataFrame(stock_change)
# print(Data)
#
# print(Data.shape)#显示数据几行几列
# print(Data.shape[0])#显示数据有几行
# print(Data.shape[1])#显示数据有几列

#构建行索引序列
stock_name=["stock_{}".format(i+1) for i in range(Data.shape[0])]#增加行索引序列
# print(stock_name)

#添加行索引
# pd.DataFrame(stock_change,index=stock_name)#index表示行索引,注意此时变量为数组
# print(index)

#构建列索引序列
stock_time=pd.date_range(start='2021.4.23',periods=Data.shape[1],freq='B')#freq为递进单位,'B'为略过周六日

#添加行、列索引
DataFrame=pd.DataFrame(stock_change,index=stock_name,columns=stock_time)#columns为列索引
print(DataFrame)

#重设索引
print(Data.reset_index(drop=True))#drop=False不删除原来索引,drop=True删除原来索引

快速入门Python机器学习笔记_第103张图片
快速入门Python机器学习笔记_第104张图片快速入门Python机器学习笔记_第105张图片快速入门Python机器学习笔记_第106张图片

import numpy as np
import pandas as pd

#创建列表
df=pd.DataFrame({'month':[1,4,7,10],
                 'year':[2017,2018,2019,2020],
                 'sale':[35,95,33,84]})
print(df)

#设置以月份索引
df1=df.set_index('month')
print(df1)

#设置多个索引
df2=df.set_index(['month','year'])
print(df2)

MutiIndex(三维数组)

快速入门Python机器学习笔记_第107张图片

import numpy as np
import pandas as pd

#创建列表
df=pd.DataFrame({'month':[1,4,7,10],
                 'year':[2017,2018,2019,2020],
                 'sale':[35,95,33,84]})
print(df)

#设置以月份索引
df1=df.set_index('month')
print(df1)

#设置多个索引
df2=df.set_index(['month','year'])
print(df2)

#MultiIndex
df3=df2.index
print(df3)

快速入门Python机器学习笔记_第108张图片
快速入门Python机器学习笔记_第109张图片

Series(一维数组)

快速入门Python机器学习笔记_第110张图片快速入门Python机器学习笔记_第111张图片

快速入门Python机器学习笔记_第112张图片快速入门Python机器学习笔记_第113张图片

import pandas as pd
import numpy as np
#默认索引
a=pd.Series(np.arange(10))
print(a)

#指定内容,指定索引
p=pd.Series([6,77,56,75,89,1],index=[1,2,3,4,5,6])
print(p)

#通过字典索引数据
d=pd.Series({'red':10,'green':5,'blue':7})
print(d)

基本操作

快速入门Python机器学习笔记_第114张图片在这里插入图片描述

import pandas as pd
#导入数据
stock_data=pd.read_csv("E:/百度网盘/stock_day.csv")
print(stock_data)
#显示前五行数据
print(stock_data.head(5))
#删除数据中不需要的列
stock_data=stock_data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"],axis=1)#axis为1表示列
print(stock_data)

索引操作

快速入门Python机器学习笔记_第115张图片快速入门Python机器学习笔记_第116张图片快速入门Python机器学习笔记_第117张图片快速入门Python机器学习笔记_第118张图片

import pandas as pd
#导入数据
stock_data=pd.read_csv("E:/百度网盘/stock_day.csv")
print(stock_data)
#显示前五行数据
print(stock_data.head(5))
#删除数据中不需要的列
stock_data=stock_data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"],axis=1)#axis为1表示列
print(stock_data)

#直接索引(先列后行)
print(stock_data['open']['2018-02-22'])
#使用loc进行索引
print(stock_data.loc["2018-02-27":"2018-02-14","open":"high"])
#使用iloc进行索引
print(stock_data.iloc[0:3,0:5])#取前三行前五列
#使用ix进行组合索引
# print(stock_data.ix[0:5,['open','high','close']])
#获取列索引
print(stock_data.columns.get_indexer(["open","low"])) 

赋值和排序操作

快速入门Python机器学习笔记_第119张图片

import pandas as pd
#导入数据
stock_data=pd.read_csv("E:/百度网盘/stock_day.csv")

#删除数据中不需要的列
stock_data=stock_data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"],axis=1)#axis为1表示列
print(stock_data)
#幅值操作
stock_data["close"]=100#将close这一列赋值为100
# stock_data.close=1000#将close这一列赋值为1000
print(stock_data)

快速入门Python机器学习笔记_第120张图片快速入门Python机器学习笔记_第121张图片
快速入门Python机器学习笔记_第122张图片

import pandas as pd
#导入数据
stock_data=pd.read_csv("E:/百度网盘/stock_day.csv")

#删除数据中不需要的列
stock_data=stock_data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"],axis=1)#axis为1表示列
print(stock_data)

#按照列值排序
print(stock_data.sort_values(by=['open','high'],ascending=False))#by表示按照什么排序,ascending=False表示降序排序

#按照行索引值进行排序
print(stock_data.sort_index())#升序排列

#使用seris进行排序
print(stock_data['open'].sort_values(ascending=True))#对open列进行升序排列
print(stock_data['open'].sort_index(ascending=False))#对open列日期大小进行排列

DataFrame运算

快速入门Python机器学习笔记_第123张图片

算数运算

快速入门Python机器学习笔记_第124张图片

import pandas as pd
#导入数据
stock_data=pd.read_csv("E:/百度网盘/stock_day.csv")

#删除数据中不需要的列
stock_data=stock_data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"],axis=1)#axis为1表示列
print(stock_data)

#算数运算
print(stock_data["close"].add(10))#close这一列加10

#任意两列运算,形成新的列
close=stock_data['close']
open1=stock_data['open']
New_price_change=stock_data["price_change"]=close.sub(open1)#close-open的差
print(New_price_change)

逻辑运算

快速入门Python机器学习笔记_第125张图片快速入门Python机器学习笔记_第126张图片

import pandas as pd
#导入数据
stock_data=pd.read_csv("E:/百度网盘/stock_day.csv")

#删除数据中不需要的列
stock_data=stock_data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"],axis=1)#axis为1表示列
print(stock_data)

#逻辑运算
print(stock_data['open']>23)
#完成多个逻辑运算
print((stock_data['open']>22 ) & (stock_data['open']<24))

快速入门Python机器学习笔记_第127张图片

import pandas as pd
#导入数据
stock_data=pd.read_csv("E:/百度网盘/stock_day.csv")

#删除数据中不需要的列
stock_data=stock_data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"],axis=1)#axis为1表示列
print(stock_data)

#逻辑运算函数
New_open=stock_data.query("open<24 & open>23")
print(New_open)
#指定一个值进行判断
print(stock_data[stock_data["open"].isin([23.53,23.85])])#显示出指定open值

统计运算

快速入门Python机器学习笔记_第128张图片快速入门Python机器学习笔记_第129张图片快速入门Python机器学习笔记_第130张图片快速入门Python机器学习笔记_第131张图片快速入门Python机器学习笔记_第132张图片

import pandas as pd
#导入数据
stock_data=pd.read_csv("E:/百度网盘/stock_day.csv")

#删除数据中不需要的列
stock_data=stock_data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"],axis=1)#axis为1表示列
print(stock_data)

#统计运算
print(stock_data.describe())

#求和
print(stock_data.sum(axis=0))#默认按列求和axis=0

#标准差
print('std\n',stock_data.std(axis=0))

#中位数
print('median\n',stock_data.median())

#求出最大值的位置
print('idxmax\n',stock_data.idxmax())

快速入门Python机器学习笔记_第133张图片快速入门Python机器学习笔记_第134张图片快速入门Python机器学习笔记_第135张图片快速入门Python机器学习笔记_第136张图片快速入门Python机器学习笔记_第137张图片快速入门Python机器学习笔记_第138张图片

import pandas as pd
import matplotlib.pyplot as plt
#导入数据
stock_data=pd.read_csv("E:/百度网盘/stock_day.csv")

#删除数据中不需要的列
stock_data=stock_data.drop(["ma5","ma10","ma20","v_ma5","v_ma10","v_ma20"],axis=1)#axis为1表示列
print(stock_data.head(20))

#按照列索引排序
stock_data=stock_data.sort_index()
# print(stock_data.head())

#取价格浮动列
stock_float=stock_data["p_change"]
#对价格浮动累计求和
stock_float=stock_float.cumsum()

#显示价格浮动图形
stock_float.plot()
plt.show()

快速入门Python机器学习笔记_第139张图片快速入门Python机器学习笔记_第140张图片

Pandas画图

快速入门Python机器学习笔记_第141张图片快速入门Python机器学习笔记_第142张图片

文件读取与存储

快速入门Python机器学习笔记_第143张图片快速入门Python机器学习笔记_第144张图片
快速入门Python机器学习笔记_第145张图片快速入门Python机器学习笔记_第146张图片

import pandas as pd
import matplotlib.pyplot as plt
#导入csv数据
stock_data=pd.read_csv("E:/百度网盘/stock_day.csv",usecols=["open","high"])
print(stock_data)
#写入csv数据
stock_data[:10].to_csv("E:/百度网盘/practice/test_py38.csv",columns=["open"],index=True)#导入数据的前十行,只取open一列,index表示是否显示索引

快速入门Python机器学习笔记_第147张图片快速入门Python机器学习笔记_第148张图片快速入门Python机器学习笔记_第149张图片

import pandas as pd
import matplotlib.pyplot as plt
#导入hdf5数据
data=pd.read_hdf("E:/BaiduWangPan/day_close.h5")
print(data)

#写入ddf5数据
test_data=data.to_hdf("E:/BaiduWangPan/practice/test_py38.h5",key="close")
#读取写入文件
print(pd.read_hdf("E:/BaiduWangPan/practice/test_py38.h5",key="close").head())

快速入门Python机器学习笔记_第150张图片快速入门Python机器学习笔记_第151张图片
快速入门Python机器学习笔记_第152张图片

import pandas as pd

#导入json数据
data=pd.read_json("E:/BaiduWangPan/Sarcasm_Headlines_Dataset.json",orient="records",lines=True)
print(data)

#存储json数据
data.to_json("E:/BaiduWangPan/practice/test_py38.json",orient="records",lines=True)

快速入门Python机器学习笔记_第153张图片

高级处理-缺失值处理

快速入门Python机器学习笔记_第154张图片快速入门Python机器学习笔记_第155张图片快速入门Python机器学习笔记_第156张图片快速入门Python机器学习笔记_第157张图片快速入门Python机器学习笔记_第158张图片

#判断缺失值是否存在
import pandas as pd
import numpy as np
#导入数据
data=pd.read_csv("E:/BaiduWangPan/IMDB-Movie-Data.csv")
print(data)

#判断是否存在缺失值
print(pd.isnull(data))#缺失值返回True
print(np.any(pd.isnull(data)))#有一个缺失值就返回True

print(pd.notnull(data))#缺失值返回False
print(np.all(pd.notnull(data)))#有一个缺失值就返回False

快速入门Python机器学习笔记_第159张图片

#删除缺失值和替换缺失值
import pandas as pd
import numpy as np
#导入数据
data=pd.read_csv("E:/BaiduWangPan/IMDB-Movie-Data.csv")
print(data)
#判断是否存在缺失值
print(np.any(pd.isnull(data)))#有一个缺失值就返回True
#用dropna删除缺失值
movie=data.dropna()
#用fillna替换缺失值
print(data["Revenue (Millions)"].fillna(value=data["Revenue (Millions)"].mean()))
#使用循环遍历所有缺失值并且进行替换
for i in data.columns:
    # print(i)                              #显示有多少列
    if np.any(pd.isnull(data[i])) == True:  #判断是否有缺失值
        print(i)                            #显示有缺失值的列
        data[i].fillna(value=data[i].mean(),inplace=True)#将有缺失值的列进行替换
print(data)

快速入门Python机器学习笔记_第160张图片快速入门Python机器学习笔记_第161张图片快速入门Python机器学习笔记_第162张图片

高级处理-数据离散化

快速入门Python机器学习笔记_第163张图片快速入门Python机器学习笔记_第164张图片快速入门Python机器学习笔记_第165张图片快速入门Python机器学习笔记_第166张图片

#股票的涨跌幅离散化
import pandas as pd
import numpy as np
#导入数据
data=pd.read_csv("E:/BaiduWangPan/stock_day.csv")
p_change=data['p_change']
print(p_change)

#用qcut自行分组
qcut=pd.qcut(p_change,10)#将该列数据分为十组区间
print(qcut)
#计算分到每个组数据个数
print(qcut.value_counts())

#用cut自定义区间分组
bins=[-100,-7,-5,-3,0,3,5,7,100]
p_count=pd.cut(p_change,bins)
print(p_count)
#计算分到每个组数据个数
print(p_count.value_counts())

快速入门Python机器学习笔记_第167张图片
快速入门Python机器学习笔记_第168张图片

#one-hot编码矩阵
import pandas as pd
import numpy as np
#导入数据
data=pd.read_csv("E:/BaiduWangPan/stock_day.csv")
p_change=data['p_change']
print(p_change)

#用qcut自行分组
qcut=pd.qcut(p_change,10)#将该列数据分为十组区间
print(qcut)
#计算分到每个组数据个数
print(qcut.value_counts())

#用cut自定义区间分组
bins=[-100,-7,-5,-3,0,3,5,7,100]
p_count=pd.cut(p_change,bins)
print(p_count)
#计算分到每个组数据个数
print(p_count.value_counts())

#生成one—hot编码矩阵
dummies=pd.get_dummies(p_count,prefix="rise")#prefix是分组的名字
print(dummies)

高级处理-数据合并

快速入门Python机器学习笔记_第169张图片快速入门Python机器学习笔记_第170张图片

#用concat数据合并
import pandas as pd
import numpy as np
#导入数据
data=pd.read_csv("E:/BaiduWangPan/stock_day.csv")
p_change=data['p_change']
# print(p_change)

#用cut自定义区间分组
bins=[0,3,5,7,100]
p_count=pd.cut(p_change,bins)
# print(p_count)

#生成one—hot编码矩阵
dummies=pd.get_dummies(p_count,prefix="rise")#prefix是分组的名字
# print(dummies)

#用concat数据合并
print(pd.concat([p_change,dummies],axis=1))

快速入门Python机器学习笔记_第171张图片

#用merge数据合并
import pandas as pd
import numpy as np

#创建数据
left=pd.DataFrame({
    'key1':['k0','k0','k1','k2'],
    'key2':['k0','k1','k0','k1'],
    'A':['A0','A1','A2','A3'],
    'B':['B0','B1','B2','B3']
})
right=pd.DataFrame({
    'key1':['k0','k1','k1','k2'],
    'key2':['k0','k0','k0','k0'],
    'C':['C0','C1','C2','C3'],
    'D':['D0','D1','D2','D3']
})
print(left)
print(right)

#merge拼接
print(pd.merge(left,right,on=['key1','key2'],how="inner"))#on是指定共同键值对进行合并(内链接方式)
print(pd.merge(left,right,on=['key1','key2'],how="outer"))#(外连接方式)
print(pd.merge(left,right,on=['key1','key2'],how="left"))#只用left键值进行合并
print(pd.merge(left,right,on=['key1','key2'],how="right"))#只用right键值进行合并

高级处理-交叉表与透视表

探索两列数据之间的关系
快速入门Python机器学习笔记_第172张图片快速入门Python机器学习笔记_第173张图片快速入门Python机器学习笔记_第174张图片快速入门Python机器学习笔记_第175张图片快速入门Python机器学习笔记_第176张图片快速入门Python机器学习笔记_第177张图片快速入门Python机器学习笔记_第178张图片

#交叉表crosstab
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#导入数据
data=pd.read_csv("E:/BaiduWangPan/stock_day.csv")
# print(data)

#转为datetime格式
time=pd.to_datetime(data.index)
# print(time)
# print(time.day)#显示哪一天
# print(time.week)#显示第几周
# print(time.weekday)#显示星期几

#找到对应的日期是星期几,并以weekday列出
data["weekday"]=time.weekday

#将p_change按照大小分类,并以p_n列出
data['p_n']=np.where(data['p_change']>0,1,0)#数据p_change>0则输出1,反之输出0

#通过交叉表寻找两列数据的关系
print(pd.crosstab(data['weekday'],data['p_n']))

#数据占比
count=pd.crosstab(data['weekday'],data['p_n'])
sum=count.sum(axis=1)#案列求和
per=count.div(sum,axis=0)#相除操作,得出比例
print(per)

#使用pivot_table(透视表)实现数据占比
# per=data.pivot_table(['p_n'],index="weekday")#p_n为1时所占的比例
#可视化
per.plot(kind="bar",stacked=True)
plt.show()

快速入门Python机器学习笔记_第179张图片
快速入门Python机器学习笔记_第180张图片

高级处理-分组与聚合

快速入门Python机器学习笔记_第181张图片
快速入门Python机器学习笔记_第182张图片在这里插入图片描述快速入门Python机器学习笔记_第183张图片

#分组和聚合
import pandas as pd
import numpy as np

#导入数据
data=pd.DataFrame({'color':['white','red','green','red','green'],'object':['pen','pencil','pencil','ashtray','pen'],'price1':[5.56,4.20,1.30,0.56,2.75],'price2':[4.75,4.12,1.60,0.75,3.15]})
print(data)

#分组、求平均值
col=data
print(col.groupby(['color'])['price1'].mean())#按照color对price1求平均值
# print(col['price'].groupby(col['color']).mean())

快速入门Python机器学习笔记_第184张图片
快速入门Python机器学习笔记_第185张图片快速入门Python机器学习笔记_第186张图片

#星巴克案例:通过groupby进行分组
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#导入数据
data=pd.read_csv("E:/BaiduWangPan/directory.csv")
print(data['Country'])

#按照country进行统计,求出每个国家星巴克的数量
count=data.groupby(['Country']).count()
print(count)

#可视化
count['Brand'].plot(kind='bar')#取数据中Brand这一列进行柱状图可视化
plt.show()
#降序可视化
sort=count['Brand'].sort_values(ascending=False)[:20]#将数据进行降序排序
sort.plot(kind='bar')
plt.show()

快速入门Python机器学习笔记_第187张图片
快速入门Python机器学习笔记_第188张图片快速入门Python机器学习笔记_第189张图片

电影数据分析案例

在这里插入图片描述快速入门Python机器学习笔记_第190张图片

#电影数据分析
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#导入数据
moive_data=pd.read_csv("E:/BaiduWangPan/IMDB-Movie-Data.csv")

#电影数据平均分
print(moive_data['Rating'].mean())
#得出导演人数信息
unique=moive_data['Director'].unique()#将数据去重
print(unique.shape[0])#得出导演数量

在这里插入图片描述

#电影数据分析
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#导入数据
moive_data=pd.read_csv("E:/BaiduWangPan/IMDB-Movie-Data.csv")

#创建画布
plt.figure(dpi=100)

#绘制Rating分布
# max_=moive_data['Rating'].max()
# min_=moive_data['Rating'].min()
# x1=np.linspace(min_,max_,21)#将数据平均分为20组(21个间隔)
# plt.xticks(x1)#生成x坐标
# plt.grid()#添加网格
# plt.hist(moive_data['Rating'].values,bins=20)#绘制直方图,分为20组

#绘制Runtime分布
max_1=moive_data['Runtime (Minutes)'].max()
min_1=moive_data['Runtime (Minutes)'].min()
x2=np.linspace(min_1,max_1,21)#将数据平均分为20组(21个间隔)
plt.xticks(x2)#生成x坐标
plt.grid()#添加网格
plt.hist(moive_data['Runtime (Minutes)'].values,bins=20)#绘制直方图,分为20组
#显示
plt.show()

快速入门Python机器学习笔记_第191张图片快速入门Python机器学习笔记_第192张图片在这里插入图片描述

#电影数据分析
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#导入数据
moive_data=pd.read_csv("E:/BaiduWangPan/IMDB-Movie-Data.csv")
# print(moive_data['Genre'])
#进行字符串分割
temp_list=[i.split(",") for i in moive_data['Genre']]
print(temp_list)
#获取电影的分类
genre_list=np.unique([i for j in temp_list for i in j])
#创建一个全为零的Dataframe
genre_zero=pd.DataFrame(np.zeros((moive_data.shape[0],genre_list.shape[0])),columns=genre_list)#创建一个行为数据总数,列为电影分类的全零Dataframe,列名改为分类名
# print(genre_zero)

#遍历每一部电影,把分类出现的列置为1
for i in range(1000):
    genre_zero.loc[i,temp_list[i]]=1#混合索引
print(genre_zero)
#求和、绘图
genre_zero.sum().sort_values(ascending=False).plot(kind="bar")
plt.show()

1.概述

快速入门Python机器学习笔记_第193张图片快速入门Python机器学习笔记_第194张图片快速入门Python机器学习笔记_第195张图片快速入门Python机器学习笔记_第196张图片快速入门Python机器学习笔记_第197张图片快速入门Python机器学习笔记_第198张图片快速入门Python机器学习笔记_第199张图片快速入门Python机器学习笔记_第200张图片
快速入门Python机器学习笔记_第201张图片快速入门Python机器学习笔记_第202张图片快速入门Python机器学习笔记_第203张图片快速入门Python机器学习笔记_第204张图片快速入门Python机器学习笔记_第205张图片快速入门Python机器学习笔记_第206张图片快速入门Python机器学习笔记_第207张图片快速入门Python机器学习笔记_第208张图片

2 .特征工程

2.1数据集

快速入门Python机器学习笔记_第209张图片快速入门Python机器学习笔记_第210张图片快速入门Python机器学习笔记_第211张图片

2.1.2sklearn数据集

快速入门Python机器学习笔记_第212张图片快速入门Python机器学习笔记_第213张图片

2.2特征工程介绍

快速入门Python机器学习笔记_第214张图片快速入门Python机器学习笔记_第215张图片快速入门Python机器学习笔记_第216张图片

2.3 特征提取

快速入门Python机器学习笔记_第217张图片快速入门Python机器学习笔记_第218张图片

2.3.2字典特征提取

快速入门Python机器学习笔记_第219张图片快速入门Python机器学习笔记_第220张图片快速入门Python机器学习笔记_第221张图片快速入门Python机器学习笔记_第222张图片快速入门Python机器学习笔记_第223张图片

快速入门Python机器学习笔记_第224张图片

2.3.3文本特征提取

快速入门Python机器学习笔记_第225张图片快速入门Python机器学习笔记_第226张图片快速入门Python机器学习笔记_第227张图片快速入门Python机器学习笔记_第228张图片在这里插入图片描述快速入门Python机器学习笔记_第229张图片快速入门Python机器学习笔记_第230张图片快速入门Python机器学习笔记_第231张图片快速入门Python机器学习笔记_第232张图片快速入门Python机器学习笔记_第233张图片快速入门Python机器学习笔记_第234张图片快速入门Python机器学习笔记_第235张图片快速入门Python机器学习笔记_第236张图片快速入门Python机器学习笔记_第237张图片快速入门Python机器学习笔记_第238张图片快速入门Python机器学习笔记_第239张图片快速入门Python机器学习笔记_第240张图片在这里插入图片描述

2.4特征预处理

快速入门Python机器学习笔记_第241张图片快速入门Python机器学习笔记_第242张图片快速入门Python机器学习笔记_第243张图片快速入门Python机器学习笔记_第244张图片

2.4.2 归一化

快速入门Python机器学习笔记_第245张图片快速入门Python机器学习笔记_第246张图片快速入门Python机器学习笔记_第247张图片

快速入门Python机器学习笔记_第248张图片
快速入门Python机器学习笔记_第249张图片

快速入门Python机器学习笔记_第250张图片快速入门Python机器学习笔记_第251张图片快速入门Python机器学习笔记_第252张图片

2.4.3标准化

快速入门Python机器学习笔记_第253张图片快速入门Python机器学习笔记_第254张图片快速入门Python机器学习笔记_第255张图片快速入门Python机器学习笔记_第256张图片快速入门Python机器学习笔记_第257张图片

2.5 特征降维

快速入门Python机器学习笔记_第258张图片此处的降维是降低特征的个数,要求特征与特征之间不相关。

2.5.1降维

快速入门Python机器学习笔记_第259张图片

2.5.2降维的两种方式(特征选择、主成分分析)

快速入门Python机器学习笔记_第260张图片

2.5.3特征选择

快速入门Python机器学习笔记_第261张图片快速入门Python机器学习笔记_第262张图片*方差选择法:低方差的特征进行过滤
*相关系数法:衡量特征与特征间的相关程度
快速入门Python机器学习笔记_第263张图片
快速入门Python机器学习笔记_第264张图片
快速入门Python机器学习笔记_第265张图片快速入门Python机器学习笔记_第266张图片快速入门Python机器学习笔记_第267张图片
快速入门Python机器学习笔记_第268张图片在这里插入图片描述快速入门Python机器学习笔记_第269张图片在这里插入图片描述快速入门Python机器学习笔记_第270张图片快速入门Python机器学习笔记_第271张图片快速入门Python机器学习笔记_第272张图片快速入门Python机器学习笔记_第273张图片快速入门Python机器学习笔记_第274张图片快速入门Python机器学习笔记_第275张图片运行结果:
在这里插入图片描述快速入门Python机器学习笔记_第276张图片

2.5.4主成分分析

快速入门Python机器学习笔记_第277张图片快速入门Python机器学习笔记_第278张图片快速入门Python机器学习笔记_第279张图片快速入门Python机器学习笔记_第280张图片快速入门Python机器学习笔记_第281张图片快速入门Python机器学习笔记_第282张图片快速入门Python机器学习笔记_第283张图片快速入门Python机器学习笔记_第284张图片在这里插入图片描述在这里插入图片描述快速入门Python机器学习笔记_第285张图片快速入门Python机器学习笔记_第286张图片探究用户对物品类别的喜好细分:
1)需要将用户(user_id)和物品类别(aisle)放在同一个表中。
2)找到user_id和aisle-交叉表和透视表
3)特征冗余过多,PCA降维
快速入门Python机器学习笔记_第287张图片在这里插入图片描述快速入门Python机器学习笔记_第288张图片在这里插入图片描述在这里插入图片描述快速入门Python机器学习笔记_第289张图片

3.分类算法

3.1sklearn转换器和估计器

快速入门Python机器学习笔记_第290张图片

3.1.1转换器

快速入门Python机器学习笔记_第291张图片在这里插入图片描述快速入门Python机器学习笔记_第292张图片快速入门Python机器学习笔记_第293张图片
快速入门Python机器学习笔记_第294张图片

3.1.2估计器

快速入门Python机器学习笔记_第295张图片
方法:1.实例化一个estimator
2.estimator.fit(x_train,y_train)计算,调用完毕,生成模型
3.模型评估:1)直接对比真实值和预测值
y_predict=estimator.predict(x_test)
y_test==y_predict
2) 计算准确率
accuracy=estimator.score(x_test,y_test)

3.2KNN算法

快速入门Python机器学习笔记_第296张图片

3.2.1什么是K-近邻算法

快速入门Python机器学习笔记_第297张图片核心思想:根据你的“邻居”推断你的类别。
快速入门Python机器学习笔记_第298张图片

快速入门Python机器学习笔记_第299张图片快速入门Python机器学习笔记_第300张图片在这里插入图片描述1)k值取得过小,容易受到异常点的影响;k值取得过大,容易样本不均衡的影响
2)需要进行无量纲化的处理,如归一化,标准化

快速入门Python机器学习笔记_第301张图片

3.2.3案例:鸢尾花种类预测

快速入门Python机器学习笔记_第302张图片
快速入门Python机器学习笔记_第303张图片快速入门Python机器学习笔记_第304张图片快速入门Python机器学习笔记_第305张图片

3.3 模型选择与调优

快速入门Python机器学习笔记_第306张图片

3.3.1交叉验证(cross validation)

快速入门Python机器学习笔记_第307张图片
快速入门Python机器学习笔记_第308张图片快速入门Python机器学习笔记_第309张图片

3.3.2超参数搜索-网格搜索(Grid Search)

快速入门Python机器学习笔记_第310张图片快速入门Python机器学习笔记_第311张图片

3.3.3 案例:鸢尾花增加K值调优

使用GridSearchCV构建估计器
快速入门Python机器学习笔记_第312张图片
在这里插入图片描述快速入门Python机器学习笔记_第313张图片快速入门Python机器学习笔记_第314张图片快速入门Python机器学习笔记_第315张图片

3.2.4案例:预测Facebook签到位置

快速入门Python机器学习笔记_第316张图片快速入门Python机器学习笔记_第317张图片快速入门Python机器学习笔记_第318张图片
在这里插入图片描述在这里插入图片描述
快速入门Python机器学习笔记_第319张图片
在这里插入图片描述在这里插入图片描述布尔索引:
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述快速入门Python机器学习笔记_第320张图片快速入门Python机器学习笔记_第321张图片

3.4朴素贝叶斯算法

快速入门Python机器学习笔记_第322张图片

3.4.1什么是朴素贝叶斯分类方法

快速入门Python机器学习笔记_第323张图片
快速入门Python机器学习笔记_第324张图片

3.4.2 概率基础

快速入门Python机器学习笔记_第325张图片快速入门Python机器学习笔记_第326张图片快速入门Python机器学习笔记_第327张图片

3.4.3联合概率、条件概率与相互独立

快速入门Python机器学习笔记_第328张图片

3.4.4朴素贝叶斯公式

快速入门Python机器学习笔记_第329张图片例题:计算 P(喜欢|产品经理,超重)=?
快速入门Python机器学习笔记_第330张图片在这里插入图片描述

朴素贝叶斯在文本分类下的应用

快速入门Python机器学习笔记_第331张图片例子:
快速入门Python机器学习笔记_第332张图片加入拉普拉斯平滑系数:
快速入门Python机器学习笔记_第333张图片

3.4.5API

快速入门Python机器学习笔记_第334张图片

3.4.6案例:20类新闻分类

快速入门Python机器学习笔记_第335张图片步骤分析:1)获取数据,2)划分数据集3)特征工程【文本特征提取tfidf】4)贝叶斯预估器流程5)模型评估

快速入门Python机器学习笔记_第336张图片from sklearn.datasets import fetch_20newsgroups from sklearn.model_selection import train_test_split from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB
快速入门Python机器学习笔记_第337张图片快速入门Python机器学习笔记_第338张图片

3.5决策树

快速入门Python机器学习笔记_第339张图片

3.5.1什么是决策树

快速入门Python机器学习笔记_第340张图片

3.5.2决策树分类原理详解

在这里插入图片描述快速入门Python机器学习笔记_第341张图片快速入门Python机器学习笔记_第342张图片快速入门Python机器学习笔记_第343张图片

信息论基础

1)信息:
香农:消除随机不定性的东西
小明:“我今年18岁”——信息
小华:“小明明年19岁”——不是信息
2)信息的衡量——信息量——信息熵

快速入门Python机器学习笔记_第344张图片快速入门Python机器学习笔记_第345张图片
快速入门Python机器学习笔记_第346张图片
以上述银行贷款为例,计算信息熵
快速入门Python机器学习笔记_第347张图片快速入门Python机器学习笔记_第348张图片

快速入门Python机器学习笔记_第349张图片快速入门Python机器学习笔记_第350张图片

3.5.3决策树API

快速入门Python机器学习笔记_第351张图片

以鸢尾花数据集为例实现决策树

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_graphviz
def decision_iris():
    """
    用决策树对鸢尾花进行分类
    :return:
    """
    # 1)获取数据集
    iris = load_iris()

    # 2)划分数据集
    x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22)

    # 3)决策树预估器
    estimator = DecisionTreeClassifier(criterion="entropy")
    estimator.fit(x_train, y_train)

    # 4)模型评估
    # 方法1:直接比对真实值和预测值
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接比对真实值和预测值:\n", y_test == y_predict)

    # 方法2:计算准确率
    score = estimator.score(x_test, y_test)
    print("准确率为:\n", score)

    # 可视化决策树
    export_graphviz(estimator, out_file="iris_tree.dot", feature_names=iris.feature_names)

    return None
if __name__ == '__main__':
    decision_iris()

快速入门Python机器学习笔记_第352张图片快速入门Python机器学习笔记_第353张图片这时,文件里的内容我们还是看不懂的,于是我们需要把内容放到一个生成树的网站里
(https://webgraphviz.com/)
快速入门Python机器学习笔记_第354张图片点击网站最下面的
在这里插入图片描述快速入门Python机器学习笔记_第355张图片

用决策树实现泰坦尼克号乘客生存预测

快速入门Python机器学习笔记_第356张图片快速入门Python机器学习笔记_第357张图片

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier, export_graphviz
def titanic():
    # 1、获取数据
    path = "http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt"
    titanic = pd.read_csv(path)
    # 筛选特征值和目标值
    x = titanic[["pclass", "age", "sex"]]
    y = titanic["survived"]
    # 2、数据处理
    # 1)缺失值处理
    x["age"].fillna(x["age"].mean(), inplace=True) #填充平均值
    # 2) 转换成字典
    x = x.to_dict(orient="records")
    # 3、数据集划分
    x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=22)
    # 4、字典特征抽取
    transfer = DictVectorizer()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    # 3)决策树预估器
    estimator = DecisionTreeClassifier(criterion="entropy", max_depth=8)
    estimator.fit(x_train, y_train)

    # 4)模型评估
    # 方法1:直接比对真实值和预测值
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接比对真实值和预测值:\n", y_test == y_predict)

    # 方法2:计算准确率
    score = estimator.score(x_test, y_test)
    print("准确率为:\n", score)

    # 可视化决策树
    export_graphviz(estimator, out_file="titanic_tree.dot", feature_names=transfer.get_feature_names())
if __name__ == '__main__':
    titanic()

快速入门Python机器学习笔记_第358张图片

3.6集成学习算法之随机森林

快速入门Python机器学习笔记_第359张图片

3.6.1什么是集成学习方法

快速入门Python机器学习笔记_第360张图片

3.6.2 什么是随机森林

快速入门Python机器学习笔记_第361张图片快速入门Python机器学习笔记_第362张图片

3.6.3随机森林原理过程

快速入门Python机器学习笔记_第363张图片快速入门Python机器学习笔记_第364张图片快速入门Python机器学习笔记_第365张图片快速入门Python机器学习笔记_第366张图片用随机森林实现泰坦尼克号实例

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import train_test_split
import pandas as pd
from sklearn.feature_extraction import DictVectorizer
def suijisanli_demo():
    # 1、获取数据
    path = "http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt"
    titanic = pd.read_csv(path)
    # 筛选特征值和目标值
    x = titanic[["pclass", "age", "sex"]]
    y = titanic["survived"]
    # 2、数据处理
    # 1)缺失值处理
    x["age"].fillna(x["age"].mean(), inplace=True)
    # 2) 转换成字典
    x = x.to_dict(orient="records")
    # 3、数据集划分
    x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=22)
    # 4、字典特征抽取
    transfer = DictVectorizer()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)
    #随机森林预估器
    estimator = RandomForestClassifier()
    # 加入网格搜索与交叉验证
    # 参数准备
    param_dict = {"n_estimators": [120, 200, 300, 500, 800, 1200], "max_depth": [5, 8, 15, 25, 30]}
    estimator = GridSearchCV(estimator, param_grid=param_dict, cv=3)
    estimator.fit(x_train, y_train)

    # 5)模型评估
    # 方法1:直接比对真实值和预测值
    y_predict = estimator.predict(x_test)
    print("y_predict:\n", y_predict)
    print("直接比对真实值和预测值:\n", y_test == y_predict)

    # 方法2:计算准确率
    score = estimator.score(x_test, y_test)
    print("准确率为:\n", score)

    # 最佳参数:best_params_
    print("最佳参数:\n", estimator.best_params_)
    # 最佳结果:best_score_
    print("最佳结果:\n", estimator.best_score_)
    # 最佳估计器:best_estimator_
    print("最佳估计器:\n", estimator.best_estimator_)
    # 交叉验证结果:cv_results_
    print("交叉验证结果:\n", estimator.cv_results_)

if __name__ == '__main__':
    suijisanli_demo()

快速入门Python机器学习笔记_第367张图片快速入门Python机器学习笔记_第368张图片快速入门Python机器学习笔记_第369张图片

4.回归与聚类算法

快速入门Python机器学习笔记_第370张图片

4.1线性回归

快速入门Python机器学习笔记_第371张图片快速入门Python机器学习笔记_第372张图片快速入门Python机器学习笔记_第373张图片快速入门Python机器学习笔记_第374张图片在这里插入图片描述快速入门Python机器学习笔记_第375张图片快速入门Python机器学习笔记_第376张图片

4.1.2线性回归的损失和优化原理

快速入门Python机器学习笔记_第377张图片即:目标就是找到一条直线,使所有点到直线的距离之和最小,即误差最小
快速入门Python机器学习笔记_第378张图片

损失函数

既然存在这个误差,那我们就将这个误差给衡量出来。
快速入门Python机器学习笔记_第379张图片

优化算法(正规方程与梯度下降)

快速入门Python机器学习笔记_第380张图片快速入门Python机器学习笔记_第381张图片快速入门Python机器学习笔记_第382张图片快速入门Python机器学习笔记_第383张图片快速入门Python机器学习笔记_第384张图片快速入门Python机器学习笔记_第385张图片快速入门Python机器学习笔记_第386张图片快速入门Python机器学习笔记_第387张图片

代码如下:

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, SGDRegressor
from sklearn.metrics import mean_squared_error
def linear1():
    """
    正规方程的优化方法对波士顿房价进行预测
    :return:
    """
    # 1)获取数据
    boston = load_boston()

    # 2)划分数据集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3)标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    # 4)预估器
    estimator = LinearRegression()
    estimator.fit(x_train, y_train)

    # 5)得出模型
    print("正规方程-权重系数为:\n", estimator.coef_)
    print("正规方程-偏置为:\n", estimator.intercept_)

    # 6)模型评估
    y_predict = estimator.predict(x_test)
    print("预测房价:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("正规方程-均方误差为:\n", error)

    return None


def linear2():
    """
    梯度下降的优化方法对波士顿房价进行预测
    :return:
    """
    # 1)获取数据
    boston = load_boston()
    print("特征数量:\n", boston.data.shape)

    # 2)划分数据集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3)标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    # 4)预估器
    estimator = SGDRegressor(learning_rate="constant", eta0=0.01, max_iter=10000, penalty="l1")
    estimator.fit(x_train, y_train)

    # 5)得出模型
    print("梯度下降-权重系数为:\n", estimator.coef_)
    print("梯度下降-偏置为:\n", estimator.intercept_)

    # 6)模型评估
    y_predict = estimator.predict(x_test)
    print("预测房价:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("梯度下降-均方误差为:\n", error)

    return None

if __name__ == '__main__':
    linear1()
    linear2()

快速入门Python机器学习笔记_第388张图片两种方法的对比

快速入门Python机器学习笔记_第389张图片快速入门Python机器学习笔记_第390张图片
快速入门Python机器学习笔记_第391张图片快速入门Python机器学习笔记_第392张图片

4.2欠拟合与过拟合

快速入门Python机器学习笔记_第393张图片以计算机识别天鹅为例,第一种欠拟合,第二种过拟合
快速入门Python机器学习笔记_第394张图片快速入门Python机器学习笔记_第395张图片快速入门Python机器学习笔记_第396张图片快速入门Python机器学习笔记_第397张图片快速入门Python机器学习笔记_第398张图片hw(xi)为预测值,yi为真实值,L1正则化就是把wj²改为|wj|

4.3线性回归的改进-岭回归

快速入门Python机器学习笔记_第399张图片快速入门Python机器学习笔记_第400张图片快速入门Python机器学习笔记_第401张图片快速入门Python机器学习笔记_第402张图片

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, SGDRegressor,Ridge
from sklearn.metrics import mean_squared_error

def linear3():
    """
    岭回归对波士顿房价进行预测
    :return:
    """
    # 1)获取数据
    boston = load_boston()
    print("特征数量:\n", boston.data.shape)

    # 2)划分数据集
    x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)

    # 3)标准化
    transfer = StandardScaler()
    x_train = transfer.fit_transform(x_train)
    x_test = transfer.transform(x_test)

    #4)预估器
    estimator = Ridge(alpha=0.5, max_iter=10000)
    estimator.fit(x_train, y_train)


    # 5)得出模型
    print("岭回归-权重系数为:\n", estimator.coef_)
    print("岭回归-偏置为:\n", estimator.intercept_)

    # 6)模型评估
    y_predict = estimator.predict(x_test)
    print("预测房价:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("岭回归-均方误差为:\n", error)

    return None
if __name__ == '__main__':
    linear3()

4.4逻辑回归(分类算法)与二分类

快速入门Python机器学习笔记_第403张图片快速入门Python机器学习笔记_第404张图片快速入门Python机器学习笔记_第405张图片快速入门Python机器学习笔记_第406张图片快速入门Python机器学习笔记_第407张图片快速入门Python机器学习笔记_第408张图片

你可能感兴趣的:(机器学习,python,人工智能)