「超级干货大放送」机器学习十二种经典模型实例
目录
实例一:线性回归波士顿房价
实例二:KNN实现电影分类
实例三:基于线性回归预测波士顿房价
实例四:sklearn完成逻辑回归鸢尾花分类
实例五:支持向量机完成逻辑回归鸢尾花分类
实例六:使用决策树实现鸢尾花分类
实例七:使用随机森林实现鸢尾花分类
实例八:使用朴素贝叶斯进行鸢尾花分类
实例九:使用Kmeans来进行鸢尾花分类
实例十:K最近邻的使用方式
实例十一:kmeans的其他展示方式
实例十二:Kmeans实现鸢尾花聚类
实例一:线性回归波士顿房价
'''实例一:线性回归波士顿房价【回归问题】
'''
# 导入数据集(波士顿房价--小型数据集)
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression # 线性回归
import matplotlib.pyplot as plt# 加载数据
X, y = load_boston(return_X_y=True)
# print(X)
# print(X.shape)# 对数据集进行处理,只展示房间数
X1 = X[:,5:6]
# print(X1)
# print(X1.shape)# 切分数据集
train_x, test_x, train_y, test_y = train_test_split(X1, y, test_size=0.3, random_state=2)# 创建线性回归对象
lr = LinearRegression()# 训练模型
lr.fit(train_x, train_y)# 预测得到结果
result = lr.predict(test_x)# 展示数据
plt.scatter(train_x, train_y, color='blue')# 划线
# plt.plot(test_x, test_y, color='red')
plt.plot(test_x, result, color='red')plt.show()
实例二:KNN实现电影分类
'''实例二:KNN实现电影分类【分类问题】
'''
import numpy as np
import pandas as pd# 训练数据
train_data = {'宝贝当家':[45,2,9,'喜剧片'],'美人鱼':[21,17,5,'喜剧片'],'澳门风云3':[54,9,11,'喜剧片'],'功夫熊猫3':[39,0,31,'喜剧片'],'谍影重重':[5,2,57,'动作片'],'叶问3':[3,2,65,'动作片'],'我的特工爷爷':[6,4,21,'动作片'],'奔爱':[7,46,4,'爱情片'],'夜孔雀':[9,39,8,'爱情片'],'代理情人':[9,38,2,'爱情片'],'新步步惊心':[8,34,17,'爱情片'],'伦敦陷落':[2,3,55,'动作片']}# 将训练数据封装为 DataFrame
train_df = pd.DataFrame(train_data).T
# 设置表格列名
train_df.columns = ['搞笑镜头','拥抱镜头','打斗镜头','电影类型']
# 设置测试数据
test_data = {'唐人街探案':[23,3,17]}# 计算欧氏距离
def euclidean_distance(vec1,vec2):return np.sqrt(np.sum(np.square(vec1 - vec2)))# 设定 K 值
K = 3
movie = '唐人街探案'# 计算出所有的欧式距离
d = []
for train_x in train_df.values[:,:-1]:test_x = np.array(test_data[movie])d.append(euclidean_distance(train_x,test_x))dd = pd.DataFrame(train_df.values, index=d)# 根据排序显示
dd1 = pd.DataFrame(dd.sort_index())
print(dd1.values[:K,-1:].max())
实例三:基于线性回归预测波士顿房价
'''实例三:基于线性回归预测波士顿房价
'''
# 1. 数据加载和预处理
import pandas as pd
from sklearn.datasets import load_boston
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split# 获取波士顿房价数据集
boston = load_boston()# 获取数据集特征(训练数据X)
X = boston.data
# 获取数据集标记(label数据y)
y = boston.target
# print(pd.DataFrame(X))# 特征归一化到 [0,1] 范围内:提升模型收敛速度
X = MinMaxScaler().fit_transform(X)
# print(X)
# print(pd.DataFrame(X))# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=2020)# 2. 线性回归算法实现import numpy as np
import matplotlib.pyplot as pltclass LinearRegression:'''线性回归算法实现'''def __init__(self, alpha=0.1, epoch=5000, fit_bias=True):'''alpha: 学习率,控制参数更新的幅度epoch: 在整个训练集上训练迭代(参数更新)的次数fit_bias: 是否训练偏置项参数'''self.alpha = alphaself.epoch = epoch# cost_record 记录每一次迭代的经验风险self.cost_record = []self.fit_bias = fit_bias# 预测函数def predict(self, X_test):'''X_test: m x n 的 numpy 二维数组'''# 模型有偏置项参数时:为每个测试样本增加特征 x_0 = 1if self.fit_bias:x_0 = np.ones(X_test.shape[0])X_test = np.column_stack((x_0, X_test))# 根据公式返回结果return np.dot(X_test, self.w)# 模型训练:使用梯度下降法更新参数(模型参数)def fit(self, X_train, y_train):'''X_train: m x n 的 numpy 二维数组y_train:有 m 个元素的 numpy 一维数组'''# 训练偏置项参数时:为每个训练样本增加特征 x_0 = 1if self.fit_bias:x_0 = np.ones(X_train.shape[0])X_train = np.column_stack((x_0, X_train))# 训练样本数量m = X_train.shape[0]# 样本特征维数n = X_train.shape[1]# 初始模型参数self.w = np.ones(n)# 模型参数迭代for i in range(self.epoch):# 计算训练样本预测值y_pred = np.dot(X_train, self.w)# 计算训练集经验风险cost = np.dot(y_pred - y_train, y_pred - y_train) / (2 * m)# 记录训练集经验风险self.cost_record.append(cost)# 参数更新self.w -= self.alpha / m * np.dot(y_pred - y_train, X_train)# 保存模型self.save_model()# 显示经验风险的收敛趋势图def polt_cost(self):plt.plot(np.arange(self.epoch), self.cost_record)plt.xlabel("epoch")plt.ylabel("cost")plt.show()# 保存模型参数def save_model(self):np.savetxt("model.txt", self.w)# 加载模型参数def load_model(self):self.w = np.loadtxt("model.txt")# 3. 模型的训练和预测
# 实例化一个对象
model = LinearRegression()
# 在训练集上训练
model.fit(X_train, y_train)
# 在测试集上预测
y_pred = model.predict(X_test)# 4. ToDo:打印模型参数
print('偏置参数:', 'ToDo')
print('特征权重:', 'ToDo')# 5. 打印测试集前5个样本的预测结果
print('预测结果:', y_pred[:5])# # 评分
# print(model.score(X_test,y_test))
实例四:sklearn完成逻辑回归鸢尾花分类
'''实例四:sklearn完成逻辑回归鸢尾花分类
'''
from sklearn import datasets
import numpy as np
import matplotlib.pyplot as plt
from mlxtend.plotting import plot_decision_regionsiris = datasets.load_iris()
X = iris.data[:, [2, 3]]
y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=0)
from sklearn.preprocessing import StandardScaler
#正则化
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression(C=1000.0, random_state=0)
lr.fit(X_train_std, y_train)
X_combined_std = np.vstack((X_train_std, X_test_std))
y_combined = np.hstack((y_train, y_test))
plot_decision_regions(X_combined_std, y_combined, clf=lr, filler_feature_ranges=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.tight_layout()
# plt.savefig('./figures/logistic_regression.png', dpi=300)
plt.show()
实例五:支持向量机完成逻辑回归鸢尾花分类
'''实例五:支持向量机完成逻辑回归鸢尾花分类
'''
from sklearn import datasets
import numpy as np
from sklearn.svm import SVC
import matplotlib.pyplot as plt
from mlxtend.plotting import plot_decision_regionsiris = datasets.load_iris()
X = iris.data[:, [2, 3]]
y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=0)
from sklearn.preprocessing import StandardScalerss = StandardScaler().fit(X_train)
x_train_std = ss.transform(X_train)
x_test_std = ss.transform(X_test)#正则化
svc = SVC(kernel='rbf', random_state=0, gamma=0.2, C=1.0)
svc.fit(x_train_std,y_train)
X_combined_std = np.vstack((x_train_std, x_test_std))
y_combined = np.hstack((y_train, y_test))
plot_decision_regions(X_combined_std, y_combined, clf=svc, filler_feature_ranges=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.tight_layout()
# plt.savefig('./figures/support_vector_machine_rbf_iris_1.png', dpi=300)
plt.show()
实例六:使用决策树实现鸢尾花分类
'''实例六:使用决策树实现鸢尾花分类
'''
from sklearn import datasets
import numpy as np
from sklearn.svm import SVC
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeClassifier
from mlxtend.plotting import plot_decision_regionsiris = datasets.load_iris()
X = iris.data[:, [2, 3]]
y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=0)
from sklearn.preprocessing import StandardScalerss = StandardScaler().fit(X_train)
x_train_std = ss.transform(X_train)
x_test_std = ss.transform(X_test)# 正则化
dtc = DecisionTreeClassifier(criterion='entropy',random_state=0,max_depth=3)
dtc.fit(X_train,y_train)
X_combined_std = np.vstack((x_train_std, x_test_std))
y_combined = np.hstack((y_train, y_test))
plot_decision_regions(X_combined_std, y_combined, clf=dtc, filler_feature_ranges=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.tight_layout()
# plt.savefig('./figures/support_vector_machine_rbf_iris_1.png', dpi=300)
plt.show()
实例七:使用随机森林实现鸢尾花分类
'''实例七:使用随机森林实现鸢尾花分类
'''
from sklearn import datasets
import numpy as np
from sklearn.svm import SVC
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from mlxtend.plotting import plot_decision_regionsiris = datasets.load_iris()
X = iris.data[:, [2, 3]]
y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=0)
from sklearn.preprocessing import StandardScalerss = StandardScaler().fit(X_train)
x_train_std = ss.transform(X_train)
x_test_std = ss.transform(X_test)# 正则化
rfc = RandomForestClassifier(criterion='entropy',n_estimators=10, random_state=1,n_jobs=2)
rfc.fit(X_train,y_train)
X_combined_std = np.vstack((x_train_std, x_test_std))
y_combined = np.hstack((y_train, y_test))
plot_decision_regions(X_combined_std, y_combined, clf=rfc, filler_feature_ranges=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.tight_layout()
# plt.savefig('./figures/support_vector_machine_rbf_iris_1.png', dpi=300)
plt.show()
实例八:使用朴素贝叶斯进行鸢尾花分类
'''实例八:使用朴素贝叶斯进行鸢尾花分类
'''
from sklearn import datasets
import numpy as np
from sklearn.svm import SVC
import matplotlib.pyplot as plt
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from mlxtend.plotting import plot_decision_regionsiris = datasets.load_iris()
X = iris.data[:, [2, 3]]
y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=0)
from sklearn.preprocessing import StandardScalerss = StandardScaler().fit(X_train)
x_train_std = ss.transform(X_train)
x_test_std = ss.transform(X_test)# 正则化
gnb = GaussianNB()
gnb.fit(X_train,y_train)
X_combined_std = np.vstack((x_train_std, x_test_std))
y_combined = np.hstack((y_train, y_test))
plot_decision_regions(X_combined_std, y_combined, clf=gnb, filler_feature_ranges=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.tight_layout()
# plt.savefig('./figures/support_vector_machine_rbf_iris_1.png', dpi=300)
plt.show()
实例九:使用Kmeans来进行鸢尾花分类
'''实例九:使用Kmeans来进行鸢尾花分类
'''
from sklearn import datasets
import numpy as np
from sklearn.svm import SVC
import matplotlib.pyplot as plt
from sklearn.naive_bayes import GaussianNB
from sklearn.cluster import KMeans
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from mlxtend.plotting import plot_decision_regionsiris = datasets.load_iris()
X = iris.data[:, [2, 3]]
y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=0)
from sklearn.preprocessing import StandardScalerss = StandardScaler().fit(X_train)
x_train_std = ss.transform(X_train)
x_test_std = ss.transform(X_test)# 正则化
km = KMeans(n_clusters=3)
km.fit(X_train,y_train)
X_combined_std = np.vstack((x_train_std, x_test_std))
y_combined = np.hstack((y_train, y_test))
plot_decision_regions(X_combined_std, y_combined, clf=km, filler_feature_ranges=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.tight_layout()
# plt.savefig('./figures/support_vector_machine_rbf_iris_1.png', dpi=300)
plt.show()
实例十:K最近邻的使用方式
'''实例十:K最近邻的使用方式
'''
from sklearn import datasets
import numpy as np
from sklearn.svm import SVC
import matplotlib.pyplot as plt
from sklearn.naive_bayes import GaussianNB
from sklearn.cluster import KMeans
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from mlxtend.plotting import plot_decision_regionsiris = datasets.load_iris()
X = iris.data[:, [2, 3]]
y = iris.target
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.3, random_state=0)
from sklearn.preprocessing import StandardScalerss = StandardScaler().fit(X_train)
x_train_std = ss.transform(X_train)
x_test_std = ss.transform(X_test)# 正则化
knn = KNeighborsClassifier(n_neighbors=5, p=2, metric='minkowski')
knn.fit(x_train_std, y_train)
X_combined_std = np.vstack((x_train_std, x_test_std))
y_combined = np.hstack((y_train, y_test))
plot_decision_regions(X_combined_std, y_combined, clf=knn, filler_feature_ranges=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.tight_layout()
# plt.savefig('./figures/support_vector_machine_rbf_iris_1.png', dpi=300)
plt.show()
实例十一:kmeans的其他展示方式
''''实例十一:•kmeans的其他展示方式
'''
import pandas as pd
from sklearn import datasets
from sklearn.cluster import KMeans
import matplotlib.pyplot as pltiris = datasets.load_iris()
X = iris.data[:, [2, 3]]
y = iris.targetdf = pd.DataFrame(X)
df.columns=['x','y']
df['kind'] = y
df['kind'] = y# 读取数据
data = iris
# 去除最后一列的数据,也就是标签
data1 = df
# print(data1)
# 聚类数为3
km = KMeans(n_clusters=3)
# 拟合数据
km.fit(data1)
predict = km.predict(data1)
# 设定坐标范围
# plt.figure(figsize=(10,10))
# 开始绘图
colored = ['orange', 'green', 'pink']
col = [colored[i] for i in predict]
plt.scatter(data1['x'], data1['y'], color=col)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
print(predict)# 真实的值
# 将列表中的最后一行标签转化为数字类型
class_mapping = {'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2}
data1['kind'] = data1['kind'].map(class_mapping)
# 设定颜色
# colored = ['green','orange','pink']
# 把标签设置为不同的颜色c = [colored[i] for i in y]
# 绘制散点图,用x和y标签
plt.scatter(data1['x'], data1['y'], color=c)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
实例十二:Kmeans实现鸢尾花聚类
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt# 读取数据
data = pd.read_csv(r"C:\Users\单纯小男子\Downloads\iris.csv")
# 去除最后一列的数据,也就是标签
data1 = data.drop(['kind'], axis=1)
# print(data1)
# 聚类数为3
km = KMeans(n_clusters=3)
# 拟合数据
km.fit(data1)
predict = km.predict(data1)
# 设定坐标范围
# plt.figure(figsize=(10,10))
# 开始绘图
colored = ['orange', 'green', 'pink']
col = [colored[i] for i in predict]
plt.scatter(data1['x'], data1['y'], color=col)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
print(predict)# 真实的值
# 将列表中的最后一行标签转化为数字类型
class_mapping = {'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2}
data['kind'] = data['kind'].map(class_mapping)
# 设定颜色
# colored = ['green','orange','pink']
# 把标签设置为不同的颜色c = [colored[i] for i in data['kind']]
# 绘制散点图,用x和y标签
plt.scatter(data['x'], data['y'], color=c)
plt.xlabel('x')
plt.ylabel('y')
plt.show()
「超级干货大放送」机器学习十二种经典模型实例相关推荐
- 【数据资源】遥感资源大放送(下)| 11 个经典遥感数据集
By 超神经 内容提要:利用遥感影像进行土地类别分型,最常用的方法是语义分割.本文继上期土地分类模型训练教程之后,又整理了几大主流公开遥感数据集. 关键词:遥感数据集 语义分割 机器视觉 在上 ...
- 我的前半生面试过300精英+学霸,总结出的面试经验干货大放送!
▼ 常爸,曾经的耶鲁管理学院校友面试官.他在高盛投行部的时候,每年要面试40-50个申请高盛的名校毕业生/MBA,五年下来,总共面过两百多人. 能到耶鲁/高盛面试这一关的,都是职场精英+学霸,但是说实 ...
- 面试干货——年底干货大放送,你准备好了吗?
前言:年底了,骚年们有没有很鸡冻--年终奖有盼头了.之前在介绍事件的这篇 C#基础系列--再也不用担心面试官问我"事件"了 也聊到了面试,引起了很多园友的共鸣.在不久的年后,热门的 ...
- WOT干货大放送:大数据架构发展趋势及探索实践分享
WOT大数据处理技术分会场,PingCAP CTO黄东旭.易观智库CTO郭炜.Mob开发者服务平台技术副总监林荣波.宜信技术研发中心高级架构师王东及商助科技(99Click)顾问总监郑泉五位讲师,分别 ...
- 吕玉琴考研指导电子版_【干货大放送】中国历代文学作品选阅读指导PDF
跟紧我,来年轻松收获录取通知书~ 长按一战成硕 hello,我是小致 带你考研上路 今天给大家分享的干货内容是 <历代文学作品选>阅读指导 之前1000题浓缩资料, 后台回复[浓缩]获取 ...
- 目前计算机常用的硬盘类型,干货大放送,电脑硬盘分类你知道几个?
用了这么多年,电脑硬盘分类你知道多少? 硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成.碟片外覆盖有铁磁性材料:依类型来分,硬盘大致可以分成固态硬盘(SSD).机械硬盘(HDD) ...
- 遥感资源大放送(上):用开源代码,训练土地分类模型
教程传送门 遥感资源大放送(下)| 11 个经典遥感数据集 遥感影像是开展测绘地理信息工作的重要数据,对于地理国情监测.地理信息数据库更新等意义重大,在军事.商业.民生等领域发挥了越来越重要的作用. ...
- 「分布式系统之美」知乎圆桌精选大放送第二期|不要放过任何你感兴趣的话题
相信大家看完上周「分布式系统之美」知乎圆桌精选大放送后还意犹未尽,新的一轮热门讨论已被小编盘点下来,快来跟随小编一起看看有什么新的答案吧. 标题精选问题 & 回答 MySQL 单表日均 15 ...
- 【资源放送】机器学习/深度学习最全公开视频大放送!
文章首发于微信公众号<有三AI> [资源放送]机器学习/深度学习最全公开视频大放送! 该篇小记一下机器学习与深度学习的一些好的基础视频资源. 如果你是刚入门的小白,建议细细阅读一下下面将要 ...
最新文章
- public接口可以被任何一个类实现_一文带你深入Java核心技术:对象克隆+接口与回调,还有这种操作...
- POJ3111 K Best —— 01分数规划 二分法
- perl学习(1) 入门
- OpenCV gapi模块API的引用(附完整代码)
- E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)
- 2020牛客国庆集训派对day2 VIRUS OUTBREAK
- Linux 金字塔 的shell命令,linux下保留文件系统下剩余指定数目文件的shell脚本
- uber-zap_如何构建自己的Uber-for-X应用程序(PART 2)
- 1.1 让CPU占用率曲线听你指挥[cpu manager]
- JAVA 内部类 泛型 实现堆栈
- IIS 搭建简单网站 并 发布项目
- 调整姿势!登顶 MacBook高效工作环境配置!
- 网络---协议(TCP/IP五层模型)
- stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)
- 面试官:你在平时的工作中遇到过哪些问题让你印象深刻?
- 【前端】ionic--星级评价半颗星实现方法
- jquery实现app开发闹钟功能_jQuery Mobile 实现苹果滑动删除闹钟功能的几点总结
- 批量将 PDF 转为 ePub 格式文档
- 区块链学习笔记15——ETH状态树
- orcad capture 快速制作原理图库