机器学习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)))
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐