数据的降维
维度是指的是数组的维度
降维:维度:特征的数量
数据降维:
- 特征分析
- 主成分分析
特征选择的原因:
- 冗余 部分特征相关度高 容易消耗计算性能
- 噪音 部分特征对预测结果有影响
方差大小:考虑所有样本这个特征的数据情况
过滤式Filter
sklearn特征选择API : sklearn.feature_selsection.VarianceThrehold
VarianceThreshold(代码演示)
- 初始化VarianceThreshold 指定阈值方差
- 调用fit_transform
code(过滤式):
def var():
'''特征选择-删除低方差的特征'''
var = VarianceThreshold(threshold=0.0) # 这里就是删除方差为0的特征 把差不多的特征给删除掉
data = var.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])
print(data)
return None
if __name__ == "__main__":
# dictvec()
# hanzivec()
# tfidfvec()
# mm()
# stand()
# imp()
var()
输出:
[[2 0]
[1 4]
[1 1]]
其他特征选择方法:
- 神经网络算法
sklearn主成分分析API
sklearn.decomposition
PCA: 特征数量达到上百个时候,考虑数据的简化问题。数据也会改变,特征数量也会减少。数据样本少的时候,就没必要进行主成分分析。
高维度数据容易出现的问题: 特征之间是相关的
比如: 二维的简化成一维的数据集
code:
def pca():
'''主成分分析进行特征降维'''
pca = PCA(n_components= 0.9 )
data = pca.fit_transform([[2,8,4,5],[6,3,0,8],[5,4,9,1]])
print(data)
return None
if __name__ == "__main__":
# dictvec()
# hanzivec()
# tfidfvec()
# mm()
# stand()
# imp()
# var()
pca()
输出:
[[ 1.22879107e-15 3.82970843e+00]
[ 5.74456265e+00 -1.91485422e+00]
[-5.74456265e+00 -1.91485422e+00]]
机器学习基础
算法
是核心数据和计算
是基础- 找准定位
- 分析很多数据
- 分析具体的业务
- 应用常见的算法
- 特征工程 调参数 优化
- 学会分析问题 使用机器学习算法的目的,想要算法完成何种任务
- 掌握算法的基本思想,学会对问题用相应的算法解决
- 学会利用
库
或者框架
解决问题
两大数据类型:
- 离散型数据 :由记录不同类别个体的数目所得到的数据,又称为
计算数据
,所有这些数据全部是整数,而且不可以再进行细分,也不能进一步提高他们的精度。 - 连续性数据:变量可以在
某个范围内取任一数
,即变量的取值可以是连续的,如长度 时间 质量值等 这类整数通常是非整数 含有小数部分。 - 总结: 离散型是区间内不可分,连续性是区间内可分
概念: 分类是监督学习的一个核心问题 在监督学习中 当输出变量取有限个离散值时,预测问题变成为分类问题。最基础的便是二分类问题 就是判断是非 从两个类别中选择一个作为预测结果。
数据来源
- 公司数据
- 合作过来的数据
- 购买的数据
机器学习开发流程
原始数据处理: (机器学习开发流程)
- 明确问题做什么 建立模型类别(根据数据类型划分模型引用种类)
- 数据基本处理: pd去处理数据(缺失值,合并表…)
- 特征工程(对特征进行处理) (重要)
- 分类 回归
- 找到合适的算法 模型: 算法+数据
- 模型的评估 判定效果 如果不合格
- 换算法 参数
- 特征工程上继续处理
- 上线使用 以API形式提供
机器学习算法分类
机器学习算法的分类:
- 监督学习(预测)
- 分类 k-近邻算法 贝叶斯分类 决策树与随机森林 逻辑回归 神经网络
- 回归 线性回归 岭回归
- 标注 隐马尔可夫模型 (不作要求)
- 无监督学习
- 聚类 k-means
监督学习: 是有特征值和目标值
非监督学习: 只有特征值
分类: 目标值离散型
回归:连续性
总结:
监督学习 -> 分类回归 -> 输入数据有特征有标签 即是有标准答案
无监督学习 -> 聚类 -> 输入有特征无标签 即是无标准答案
机器学习模型是什么
模型: 算法+数据
数据的划分和介绍
sklearn数据集
- 数据集划分
- sklearn 数据集接口介绍
- sklearn 分类数据集
- sklearn 回归数据集
机器学习一般的数据集一般会划分为两个部分:
训练数据: 用于训练 构建模型
测试数据: 用于训练,构建模型
划分训练集(75%)和测试集(25%)
建立模型(算法+数据)和评估模型
sklearn数据集划分API
sklearn.model_selsection.train_test_split
code:
from sklearn.datasets import load_iris
# 加载并返回鸢尾花数据集
li = load_iris()
print("获取特征值") # 150个
print(li.data)
print("获取目标值")
print(li.target) # 三种类别
print(li.DESCR)
对数据集进行分割
code:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载并返回鸢尾花数据集
li = load_iris()
# print("获取特征值") # 150个
# print(li.data)
# print("获取目标值")
# print(li.target) # 三种类别
# print(li.DESCR)
# 注意返回值 返回值包含训练集x_train y_train和 测试集x_test y_train
# x 数据集的特征值
# y 数据集的标签值
x_train,x_test,y_train,y_test = train_test_split(li.data,li.target,test_size= 0.25)
print("训练集特征值和目标值: ",x_train,y_train)
print("测试集特征值和目标值: ",x_test,y_test)
code:
#!usr/bin/env python
# -*- coding:utf-8 _*-
"""
@author: guosihan
@file: sklearn_test.py
@time: 2020/05/15
@desc:
"""
from sklearn.datasets import load_iris,fetch_20newsgroups,load_boston
from sklearn.model_selection import train_test_split
# 加载并返回鸢尾花数据集
li = load_iris()
# print("获取特征值") # 150个
# print(li.data)
# print("获取目标值")
# print(li.target) # 三种类别
# print(li.DESCR)
# 注意返回值 返回值包含训练集x_train y_train和 测试集x_test y_train
# x 数据集的特征值
# y 数据集的标签值
# x_train,x_test,y_train,y_test = train_test_split(li.data,li.target,test_size= 0.25)
# print("训练集特征值和目标值: ",x_train,y_train)
# print("测试集特征值和目标值: ",x_test,y_test)
# news = fetch_20newsgroups(subset='all')
# print(news.data)
# print(news.target)
lb = load_boston()
print("获取特征值")
print(lb.data)
print("获取目标值")
print(lb.target)
转换器和预估器