中国mooc北京理工大学机器学习第一周(一)

从今天开始跟着北理工的老师走一遍sklearn,在这里做笔记。

一、聚类

1、K-Means方法

先贴代码,所有数据的下载地址:http://pan.baidu.com/s/1hrO5NW4

    import numpy as np
    from sklearn.cluster import KMeans

    def loadData(filePath):#def一个读取数据的loadData
        fr = open(filePath,‘r+‘)
        lines = fr.readlines()
        retData = []
        retCityName = []
        for line in lines:
            items = line.strip().split(",")
            retCityName.append(items[0])
            retData.append([float(items[i]) for i in range(1,len(items))])
        return retData,retCityName
                                                               
                                                             
    if __name__ == ‘__main__‘:                                        
        data,cityName = loadData(‘city.txt‘)
        km = KMeans(n_clusters=4)#构造聚类容器,分为四类
        label = km.fit_predict(data)#进行聚类,贴标签,label=4
        expenses = np.sum(km.cluster_centers_,axis=1)#expenses是每一个聚类容器的sum
        CityCluster = [[],[],[],[]]#这里的类别大于等于n_clusters
        for i in range(len(cityName)):
            CityCluster[label[i]].append(cityName[i])
        for i in range(len(CityCluster)):
            print("Expenses:%.2f" % expenses[i])
            print(CityCluster[i])
 1   sklearn.cluster.KMeans(
 2     n_clusters=8,#你想分类的种类
 3       init=‘k-means++‘,#初始簇中心的获取方法
 4       n_init=10,#获取初始簇中心的更迭次数,为了弥补初始质心的影响,算法默认会初始10个质心,实现算法,然后返回最好的结果。
 5       max_iter=300,#最大迭代次数
 6       tol=0.0001,#容忍度,即kmeans运行准则收敛的条件
 7       precompute_distances=‘auto‘, #是否需要提前计算距离
 8       verbose=0,
 9       random_state=None,
10       copy_x=True,
11      n_jobs=1, #并行设置
12      algorithm=‘auto‘ #kmeans的实现算法
13      )

总结一下:先读取数据集合 ==>  构造聚类容器(分几类) ==>  进行聚类贴标签 ==> 根据贴好的标签放到对应的聚类容器 ==> 计算中心值

暂时先了解这么多,结合andrew和林轩田的机器学习课程知道,这里Kmeans方法整个聚类的计算是先随机选定聚类中心,不断迭代修正,求向量和最小。

目前主要先掌握如何使用sklearn。

2、DBSCAN聚类算法

DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法。

由名字就可以知道他可以算出哪些离群点是噪音

他和kmeans一个显著的区别是他自动设置聚类的多少,需要人为调的参数是设定核心点的范围。

      2_1、数据的读取与预处理

    import numpy as np
    import sklearn.cluster as skc
    from sklearn import metrics
    import matplotlib.pyplot as plt
    mac2id=dict()#字典
    onlinetimes=[]#数组
    f=open(‘TestData.txt‘,encoding=‘utf-8‘)
    for line in f:
        mac=line.split(‘,‘)[2]  #A417314EEA7B
        onlinetime=int(line.split(‘,‘)[6]) #15
        starttime=int(line.split(‘,‘)[4].split(‘ ‘)[1].split(‘:‘)[0])#22
        if mac not in mac2id:
            mac2id[mac]=len(onlinetimes)#如果没有出现过,直接append
            onlinetimes.append((starttime,onlinetime))
        else:
            onlinetimes[mac2id[mac]]=[(starttime,onlinetime)]#出现过会替代(不太理解这,可能是数据的特点吧)
    real_X=np.array(onlinetimes).reshape((-1,2))#改成两列(-1的含义是任意行)

2_2、DBSCAN聚类

   X=real_X[:,0:1]#按照原形式读取第一列
    print(X)

    db=skc.DBSCAN(eps=0.01,min_samples=20).fit(X)#进行聚类,eps:半径,min_samples:数据的个数
    labels = db.labels_#贴标签与取标签

    print(‘Labels:‘)
    print(labels)
    raito=len(labels[labels[:] == -1]) / len(labels)#-1为噪声点
    print(‘Noise raito:‘,format(raito, ‘.2%‘))

    n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)   #set的作用是去重复,然后减去噪声

    print(‘Estimated number of clusters: %d‘ % n_clusters_)
    print("Silhouette Coefficient: %0.3f"% metrics.silhouette_score(X, labels))

    for i in range(n_clusters_):
        print(‘Cluster ‘,i,‘:‘)
        print(list(X[labels == i].flatten()))#flatten方法:高维array和matrix转化成1维。list不可用。

    plt.hist(X,20)
    plt.show()

总结一下是这个课程老师上课讲的很简要,聚类一共讲了大概30分钟,但是很多细节需要自己下功夫百度,很不错的课程。

之前学过andrew和林轩田的课程,结合这个看发现自己有很多没掌握的地方。

抽时间回去看看。

以上:)

时间: 2024-10-18 03:23:44

中国mooc北京理工大学机器学习第一周(一)的相关文章

中国mooc北京理工大学机器学习第一周(二)

---恢复内容开始--- 今天学习第一周的第二课时:降维. 一.PCA主成分分析 主成分分析(Principal Component Analysis,PCA),是一种统计方法,直观来讲是把数据按照weights来筛选出主成分消除(或者隐蔽)不太重要的方面,使得高纬度数据投射到低维度. 直观来讲是应用了统计学上方差和协方差的知识,若协方差越接近1则表示A,B越接近:反之,若等于零则无关. 这里可以理解在一个高纬度角度(n维空间)去找一个角度使得从你这个角度看过去很多cov(A,B)很小的数值为零

中国mooc北京理工大学机器学习第一周(三)

三.基于聚类的整图分割 需要利用PIL进行图片处理,在anaconda安装的时候提示PIL只能用在py26,搜索知,可以conda install pillow 即可. def loadData(filePath): f = open(filePath,'rb') data = [] img = image.open(f) m,n = img.size for i in range(m): for j in range(n): x,y,z = img.getpixel((i,j)) #getpi

中国mooc北京理工大学机器学习第二周(一):分类

一.K近邻方法(KNeighborsClassifier) 使用方法同kmeans方法,先构造分类器,再进行拟合.区别是Kmeans聚类是无监督学习,KNN是监督学习,因此需要划分出训练集和测试集. 直接贴代码. X=[0,1,2,3]#样本 Y=[0,0,1,1]#标签 from sklearn.neighbors import KNeighborsClassifier neigh = KNeighborsClassifier(n_neighbors=3)#选择周围的三个点作为近邻分析 nei

中国mooc北京理工大学机器学习第二周(二):回归

一.线性回归(Liner Regression) 利用数理统计中的回归分析,来确定两种或两种以上变量间相互依赖的定量关系的统计方法. 线性回归是用最小平方函数对一个或多个自变量和因变量之间进行建模. 导入和使用比较简单. from sklearn import linear_model linear = linear_model.LinearRegression() linear.fit(datasets_X, datasets_Y) 预测房屋价格. import matplotlib.pypl

中国mooc北京理工大学机器学习第二周(三):手写数字识别

利用sklearn中的神经网络进行数字识别. 先简单搬运占坑,暂时用不到. import numpy as np #导入numpy工具包 from os import listdir #使用listdir模块,用于访问本地文件 from sklearn.neural_network import MLPClassifier def img2vector(fileName): retMat = np.zeros([1024],int) #定义返回的矩阵,大小为1*1024 fr = open(fi

中国mooc北京理工大学机器学习第三周(一):强化学习基础

强化学习是程序或者智能体通过与环境不断地进行交互学习一个从环境到动作的映射,学习的目标使累计回报最大化. 强化学习是一种试错学习,在各种状态选需要尽量尝试所有可以选择的动作,通过环境的反馈来判断动作的优劣,最终获得环境和最优动作的映射关系. (马尔可夫)MDP通常来描述一个强化学习问题,智能体根据当前环境的观察采取动作获得反馈,并使环境改变. 在现实的强化学习任务中,很多条件不能获得,若学习不再依赖环境,则称为免疫模型学习,蒙特卡洛强化学习. Q-learning结合了动态规划和蒙特卡洛强化学习

机器学习-第一周

机器学习-第一周 这是机器学习的第一周课程,涉及到的内容较少,主要是认识一下什么是机器学习以及机器学习两个主要的分类:有监督学习和无监督学习.另外,通过一个最基础的线性回归模型来介绍机器学习中的一些相关的概念. 本周内容思维导图 Introduce 什么是机器学习? A computer program is said to learn from experience E with respect to some task T and some performance measure P, if

斯坦福机器学习第一周

一.监督学习和无监督学习 1.监督学习,就是人们常说的分类,通过已有的训练样本(即已知数据以及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优则表示在某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的,也就具有了对未知数据进行分类的能力. 监督学习中可以通过分类预测,也可以通过线性回归来预测. 如果目标变量是离散型,如是 / 否 . 1/2/3 . ― 冗或者红 / 黄 / 黑 等 ,则可以选择分类器算法; 如果目标

机器学习001 deeplearning.ai 深度学习课程 Neural Networks and Deep Learning 第一周总结

Deep Learning Specialization 吴恩达老师最近在coursera上联合deeplearning.ai 推出了有关深度学习的一系列课程,相对于之前的machine learning课程,这次的课程更加实用,作业语言也有matlab改为了python从而更加贴合目前的趋势.在此将对这个系列课程做一个学习笔记. 而这次的Deep Learning Specialization分为五门课程,分别为:Neural Networks and Deep Learning,Improv