机器学习课程总结,
本系列文章
以代码
和注释
为主。
理论部分搬至博客上比较耗费时间,所以缺少理论部分。但是也欢迎大家一起探讨学习。
如果需要理论部分的讲义,可私信(个人觉的讲的很好很全)。
问题需求
现在提供了三组不同分布的样本,请选择以下算法针对三组数据分别训练模型,并可视化结果,可视化的示例如附件所示。
要求:
-
将每组样本按照7:3的比例随机分成训练集和测试集;
-
在训练集上分别训练分类模型:感知器、逻辑斯蒂回归、K-近邻、朴素贝叶斯、线性支持向量机、高斯核的支持向量机、多项式核的支持向量机、决策树、随机森林、Adaboost、梯度提升树;
-
计算测试集上的准确率,并将准确率显示到可视化界面中;
-
可视化结果时,不同类别的样本用不同形状的点加以区分,同类型的训练样本和测试样本用颜色区分。如标注为1的样本用形状1的点,标注为0的样本用形状2的点,在所有样本中,训练样本用一种颜色,测试样本用另一种颜色。
-
提供了两种格式的数据文件:csv和npy,自己选择使用哪一种格式。
代码
# coding: utf-8
# In[373]:
import numpy as np
import pandas as pd
from sklearn import svm
import matplotlib.pyplot as plt
from sklearn.tree import DecisionTreeClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import Perceptron
from sklearn.ensemble import AdaBoostClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.ensemble import RandomForestClassifier
# In[374]:
# 数据的读取
data_circles = pd.read_csv('./data_csv/data_circles.csv', header=None)
data_moons = pd.read_csv('./data_csv/data_moons.csv', header=None)
linearly_separable = pd.read_csv('./data_csv/linearly_separable.csv', header=None)
# print(data_moons)
# print(linearly_separable)
# In[375]:
# 数据集拆分
Cf = data_circles.iloc[:, :2] # 特征
Cl = data_circles.iloc[:, -1].astype('int') # 标签
cf_train, cf_test, cl_train, cl_test = train_test_split(Cf, Cl, test_size=0.3)
print(Cf)
print(Cl)
input()
Mf = data_moons.iloc[:, :2] # 特征
Ml = data_moons.iloc[:, -1].astype('int'