记录从准研一假期自学PYTHON的全过程day41(降维,机器学习)

103 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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的那一列数据。

输出的结果如下:

image.png

上图就是删除方差为0的结果。

如果删除了低方差的列,那么如何知道剩余那一列的编号呢?

这个时候需要用到var自有的方法:

var.get_support(True)

具体实现如下:

print('The surport is %s' % var.get_support(True))

输出的结果如下:

image.png

使用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()

输出的结果如下:

image.png

机器学习

分为分类问题/回归问题

机器学习算法分类:

1.监督学习: 分类,k-邻近算法,贝叶斯分类,决策树与随机森林,逻辑回归,神经网络,

回归:线性回归,岭回归