机器学习笔记-朴素贝叶斯
朴素贝叶斯
- 通过概率分类
朴素贝叶斯要用到的概率知识
- 贝叶斯公式
- 例子
朴素贝叶斯计算的时候可能出现为0的值,这个时候引入拉普拉斯平滑系数
- 例子
朴素贝叶斯API
- API
- 例子-day9-5.商品评论情感分析
百度AI情感分析
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)