归一化
from sklearn.preprocessing import MinMaxScaler
def mm(): # 归一化处理
mm = MinMaxScaler()
data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])
print(data)
if __name__=='__main__':
mm()
标准化
from sklearn.preprocessing import StandardScaler
def stand():
# 标准化缩放
std = StandardScaler()
data = std.fit_transform([[1.,-1.,3.],[2.,4.,2.],[4.,6.,-1.]])
print(data)
if __name__=='__main__':
stand()
import numpy as np
from sklearn.preprocessing import Imputer
def im():
# 缺失值处理
im = Imputer(missing_values="nan",strategy="mean",axis=0)
data = im.fit_transform([[1,2],[np.nan,3],[7,6]])
print(data)
if __name__=='__main__':
im()
特征处理
特征处理是什么:通过特定的统计方法(数学方式)将数据转换成算法要求的数据。
降维:把特征的数量减少叫做降维
特征的选择:特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后可以改变值,也不改变值,但是选择后的特征维度肯定比之前小,毕竟我们只选择了其中的一部分特征。
主要方法(工具):
filter(过滤式):VarianceThreshold
Embedded(嵌入式):正则化,决策树
Wrapper(包裹式)
降维过滤式:从方差大小来考虑所有样本这个特征的数据情况
def var():
# 特征选择-删除低方差的特征
var = VarianceThreshold(threshold=0.0)# 根据实际情况取值
data = var.fit_transform([[0,2,0,3],[0,1,4,3],[0,1,1,3]])
print(data)
if __name__=='__main__':
var()
降维主成分分析
PCA:当特征数量达到上百的时候—考虑数据的简化
n_components 小数 0-1 90% 一般保留特征(90%-95%)
整数:减少到的特征数量 一般使用小数
from sklearn.decomposition import PCA
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)
if __name__=='__main__':
pca()
案例:
数据来源:https://www.kaggle.com/c/instacart-market-basket-analysis/data?select=order_products__prior.csv.zip
文件详情截图
1,合并各张表到一张表当中
pd.merge()
import pandas as pd
from sklearn.decomposition import PCA
# 读取4张表数据
prior = pd.read_csv("./analysis/order_products__prior.csv")
products = pd.read_csv("./analysis/products.csv")
aisles = pd.read_csv("./analysis/aisles.csv")
orders = pd.read_csv("./analysis/orders.csv")
# 合并四张表到一张表中(用户-物品类别。。。)
_mg = pd.merge(prior,products,on=["product_id","product_id"])
_mg = pd.merge(_mg,orders,on=["order_id","order_id"])
mt = pd.merge(_mg,aisles,on=["aisle_id","aisle_id"])
print(mt.head(10))
# 2,建立一个类似行,列的数据 交叉表(特殊的分组表)如: 用户1--商品参数
cross = pd.crosstab(mt["user_id"],mt["aisle"])
print(cross.head(10))
# 3, 进行主成分分析
pca = PCA(n_components=0.9)
data = pca.fit_transform(cross)
print(data)
print(data.shape)
其他降维方法:线性判别分析LDA
机器学习基础
1,机器学习开发流程
2,机器学习算法分类
明确几点问题:
(1)算法是机器学习的核心,数据和计算是基础
(2)找准定位
- 分析很多的数据
- 分析具体的业务
- 应用常见的算法
- 特征工程,掉参数,优化
(3)学会分析问题,使用机器学习算法的目的,想要算法完成何种任务
(4)掌握算法的基本思想,学会对问题用响应的算法解决
(5)学会利用库或者框架解决问题
监督学习(重点):有特征值+目标值
-
分类:目标值离散型 回归:目标值连续性
-
-
输入数据有特征有标签,即有标准答案
非监督学习:只有特征值
- 输入数据有特征无标签,即无标准答案
3,机器学习模型
算法+数据=模型