机器学习算法之一
机器学习4大主要的任务:
分类,回归,聚类,时序分析
分类,简而言之是给数据分类,给数据找到一个函数,可以将样本划分成不同的种类。
回归,是找到一个函数,使得函数与目标数据的误差最小,即用一条直线代表目标数据,从而可以预测数据。
分类和回归的数据模型的区别是:
分类采用的是离散的预测值,而回归采用的是连续的预测值。
聚类,是输入一组未标签的数据,根据样本的特征和相似度进行划分。划分的原则是组内最大的相似性和组间最小的相似性。
聚类和分类,回归的区别是,分类和回归的训练数据都是有标签,从而给预测数据打上标签,聚类的训练数据是没有标签,通过学习,给数据打上标签。
时序分析,与回归一样,区别是这些数据与时间相关,重点考察数据与时间的关系。
为方便大家学习 这里给大家整理了一份学习资料包 需要的同学 根据下图自取即可

python 在这机器学习算法中有相应的包可以使用,以下是举例:
KNN:
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.neighbors import KNeighborsClassifier
# 加载数据集
fruits_df = pd.read_table('fruit_data_with_colors.txt')
X = fruits_df[['mass', 'width', 'height', 'color_score']]
y = fruits_df['fruit_label']
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split
(X, y, test_size=1/4, random_state=0)
# 建立模型
knn = KNeighborsClassifier(n_neighbors=5)
# 训练模型
knn.fit(X_train, y_train)
# 验证模型
y_pred = knn.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print('准确率:', acc)
线性回归:
from sklearn.linear_model import LinearRegression
X_train, X_test, y_train, y_test = train_test_split
(X_R1, y_R1,
random_state = 0)
# 调用线型回归模型
linreg = LinearRegression()
# 训练模型
linreg.fit(X_train, y_train)
# 输出结果
print('线型模型的系数(w): {}'.format(linreg.coef_))
print('线型模型的常数项(b): {:.3f}'.format(linreg.intercept_))
print('训练集中R-squared得分: {:.3f}'.
format(linreg.score(X_train, y_train)))
print('测试集中R-squared得分: {:.3f}'.
format(linreg.score(X_test, y_test)))
逻辑回归:
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.linear_model import LogisticRegression
from ml_visualization import plot_class_regions_for_classifier
# 加载数据集
fruits_df = pd.read_table('fruit_data_with_colors.txt')
X = fruits_df[['width', 'height']]
y = fruits_df['fruit_label'].copy()
# 将不是apple的标签设为0
y[y != 1] = 0
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split
(X, y, test_size=1/4, random_state=0)
# 不同的C值
c_values = [0.1, 1, 100]
for c_value in c_values:
# 建立模型
lr_model = LogisticRegression(C=c_value)
# 训练模型
lr_model.fit(X_train, y_train)
# 验证模型
y_pred = lr_model.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print('C={},准确率:{:.3f}'.format(c_value, acc))
SVM: 属于分类算法中的一种,是找到一个最大间隔的分类器,即在样本中能够达到最大间隔的分类器称作SVM。
SVM和LR的区别:
1、LR采用log损失,SVM采用合页损失。
2、LR对异常值敏感,SVM对异常值不敏感。
3、在训练集较小时,SVM较适用,而LR需要较多的样本。
4、LR模型找到的那个超平面,是尽量让所有点都远离他,而SVM寻找的那个超平面,是只让最靠近中间分割线的那些点尽量远离,即只用到那些支持向量的样本。
5、对非线性问题的处理方式不同,LR主要靠特征构造,必须组合交叉特征,特征离散化。SVM也可以这样,还可以通过kernel。
为方便大家学习 这里给大家整理了一份学习资料包 需要的同学 根据下图自取即可

import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.svm import SVC
# 加载数据集
fruits_df = pd.read_table('fruit_data_with_colors.txt')
X = fruits_df[['width', 'height']]
y = fruits_df['fruit_label'].copy()
# 将不是apple的标签设为0
y[y != 1] = 0
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split
(X, y, test_size=1/4, random_state=0)
# 不同的C值
c_values = [0.0001, 1, 10000]
for c_value in c_values:
# 建立模型
svm_model = SVC(C=c_value)
# 训练模型
svm_model.fit(X_train, y_train)
# 验证模型
y_pred = svm_model.predict(X_test)
acc = accuracy_score(y_test, y_pred)
print('C={},准确率:{:.3f}'.format(c_value, acc))
决策树,是一种基本的分类与回归方法,表示基于特征对实例进行分类的过程,决策树通常有三个步骤:特征选择、决策树的生成、决策树的修剪。
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split
(iris.data, iris.target, random_state=0)
max_depth_values = [2, 3, 4]
for max_depth_val in max_depth_values:
dt_model = DecisionTreeClassifier(max_depth=max_depth_val)
dt_model.fit(X_train, y_train)
print('max_depth=', max_depth_val)
print('训练集上的准确率: {:.3f}'.
format(dt_model.score(X_train, y_train)))
print('测试集的准确率: {:.3f}'.
format(dt_model.score(X_test, y_test)))更多推荐


所有评论(0)