机器学习笔记-朴素贝叶斯+SVM

朴素贝叶斯

  • 通过概率分类
    在这里插入图片描述

朴素贝叶斯要用到的概率知识

在这里插入图片描述

  • 贝叶斯公式
    在这里插入图片描述
  • 例子
    在这里插入图片描述

朴素贝叶斯计算的时候可能出现为0的值,这个时候引入拉普拉斯平滑系数

  • 例子
    在这里插入图片描述

朴素贝叶斯API

SVM支持向量机

  • 用超平面,尽可能大的分开两类小球
    在这里插入图片描述

  • 核方法就是从低纬度到高纬度的方法
    在这里插入图片描述

SVM-API

在这里插入图片描述

SVM-核函数的讲解

在这里插入图片描述

  • 例子
    在这里插入图片描述

常见核函数-高斯核RBF

在这里插入图片描述

在这里插入图片描述

常见核函数-支持分类和回归的API

在这里插入图片描述

SVM的代码例子

  • 代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
from sklearn.model_selection import train_test_split

#1.获取数据
train = pd.read_csv("./data/train.csv")
train.head()
train.shape

#2.确定特征值\目标值
train_image = train.ix[:, 1:]
train_image.head()
train_label = train.ix[:, 0]
train_label.head()

#3.查看具体图像
num = train_image.ix[0,].values.reshape(28, 28)
plt.imshow(num)
plt.axis("off")
plt.show()
def to_plot(n):
    num = train_image.ix[n,].values.reshape(28, 28)
    
    plt.imshow(num)
    plt.axis("off")
    plt.show()
to_plot(n=40)

#4.1数据基本处理
train_image.head()

#4.2数据归一化处理
train_image = train_image.values / 255 # 对数据特征值归一化处理
train_label = train_label.values

#4.3数据集分割
x_train, x_val, y_train, y_val = train_test_split(train_image, train_label, train_size = 0.8, random_state=0)
print(x_train.shape, x_val.shape)

#5.特征降维和模型训练
import time
from sklearn.decomposition import PCA

#5.1多次使用pca,确定最后的最优模型
def n_components_analysis(n, x_train, y_train, x_val, y_val):
    # 记录开始时间
    start = time.time()
    
    # pca降维实现
    pca = PCA(n_components=n)
    print("特征降维,传递的参数为:{}".format(n))
    pca.fit(x_train)
    
    # 在训练集和测试集进行降维
    x_train_pca = pca.transform(x_train)
    x_val_pca = pca.transform(x_val)
    
    # 利用svc进行训练
    print("开始使用svc进行训练")
    ss = svm.SVC()
    ss.fit(x_train_pca, y_train)
    
    # 获取accuracy结果
    accuracy = ss.score(x_val_pca, y_val)
    
    # 记录结束时间
    end = time.time()
    print("准确率是:{}, 消耗时间是:{}s".format(accuracy, int(end-start)))
    
    return accuracy 
    
#5.2传递多个n_components,寻找合理的n_components:
n_s = np.linspace(0.70, 0.85, num=5)
accuracy = []

for n in n_s:
    tmp = n_components_analysis(n, x_train, y_train, x_val, y_val)
    accuracy.append(tmp)

#5.3准确率可视化展示
plt.plot(n_s, np.array(accuracy), "r")
plt.show()

#6.确定最优模型
pca = PCA(n_components=0.80)

pca.fit(x_train)
pca.n_components_
x_train_pca = pca.transform(x_train)
x_val_pca = pca.transform(x_val)
print(x_train_pca.shape, x_val_pca.shape)

# 训练比较优的模型,计算accuracy
ss1 = svm.SVC()
ss1.fit(x_train_pca, y_train)
ss1.score(x_val_pca, y_val)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值