携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第31天,点击查看活动详情
也是暑假自学python的第41天
今天继续昨天的学习:
降维
降维:降维的效果就是将特征数变少,降维可以提高模型训练速度。
删除低方差算法var():
from sklearn.feature_selection import VarianceThreshold
def var():
"""
特征选择-删除低方差的特征
:return: None
"""
#默认只删除方差为0,threshold是方差阈值,删除比这个值小的那些特征
var = VarianceThreshold(threshold=0)
data = var.fit_transform([[0, 2, 0, 3],
[0, 1, 4, 3],
[0, 1, 1, 3]])
print(data)
var()
var = VarianceThreshold(threshold=0)这句代码的作用就是设置threshold为方差阈值,当threshold=0时候就删除方差为0的那一列数据,当threshold=1的时候就删除方差为1的那一列数据。
输出的结果如下:
上图就是删除方差为0的结果。
如果删除了低方差的列,那么如何知道剩余那一列的编号呢?
这个时候需要用到var自有的方法:
var.get_support(True)
具体实现如下:
print('The surport is %s' % var.get_support(True))
输出的结果如下:
使用pca降维
pca算法可以将二维将为一维,可以将三维降为二维,sklearn中使用pca进行降维,将二维降为一维的过程中,将二维中的点,通过pca算法找到一条直线,这条直线就是所有点到这条直线垂直距离最短的来得到确定。
pca的算法如下:
def pca():
"""
主成分分析进行特征降维
:return: None
"""
# n_ components:小数 0~1 90% 业界选择 90~95%
#
# 整数 减少到的特征数量
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
pca()
输出的结果如下:
机器学习
分为分类问题/回归问题
机器学习算法分类:
1.监督学习: 分类,k-邻近算法,贝叶斯分类,决策树与随机森林,逻辑回归,神经网络,
回归:线性回归,岭回归