Skip to the content.

《Machine Learning In Action》 中AdaBoost部分代码精简优化


Contact me:

Blog -> https://cugtyt.github.io/blog/index
Email -> cugtyt@qq.com
GitHub -> Cugtyt@GitHub


本系列博客主页及相关见此处
此处粘贴的代码来源为https://github.com/Jack-Cherish/Machine-Learning


1. showDataSet函数用于显示数据

原代码:

def showDataSet(dataMat, labelMat):
    data_plus = []                                  #正样本
    data_minus = []                                 #负样本
    for i in range(len(dataMat)):
        if labelMat[i] > 0:
            data_plus.append(dataMat[i])
        else:
            data_minus.append(dataMat[i])
    data_plus_np = np.array(data_plus)                                             #转换为numpy矩阵
    data_minus_np = np.array(data_minus)                                         #转换为numpy矩阵
    plt.scatter(np.transpose(data_plus_np)[0], np.transpose(data_plus_np)[1])        #正样本散点图
    plt.scatter(np.transpose(data_minus_np)[0], np.transpose(data_minus_np)[1])     #负样本散点图
    plt.show()

问题:

numpy中的transpose可以接收列表生成array类型,因此无需提前更改数据类型后再传入。

参考修改:

def showDataSet(dataMat, labelMat):
    data_plus = []                                  #正样本
    data_minus = []                                 #负样本
    for i in range(len(dataMat)):
        if labelMat[i] > 0:
            data_plus.append(dataMat[i])
        else:
            data_minus.append(dataMat[i])
    plt.scatter(np.transpose(data_plus)[0], np.transpose(data_plus)[1])        #正样本散点图
    plt.scatter(np.transpose(data_minus)[0], np.transpose(data_minus)[1])     #负样本散点图
    plt.show()