使用python sklearn下的k_means聚类分析算法时遇到的问题
#-*- coding: utf-8 -*- #使用K-Means算法聚类消费行为特征数据 import pandas as pd #参数初始化 inputfile = '../data/consumption_data.xls' #销量及其他属性数据 outputfile = '../tmp/data_type.xls' #保存结果的文件名 k = 3 #聚类的类别 iteration = 500 #聚类最大循环次数 data = pd.read_excel(inputfile, index_col = 'Id') #读取数据 data_zs = 1.0*(data - data.mean())/data.std() #数据标准化 from sklearn.cluster import KMeans model = KMeans(n_clusters = k, n_jobs = 4, max_iter = iteration) #分为k类,并发数4 model.fit(data_zs) #开始聚类 #简单打印结果 r1 = pd.Series(model.labels_).value_counts() #统计各个类别的数目 r2 = pd.DataFrame(model.cluster_centers_) #找出聚类中心 r = pd.concat([r2, r1], axis = 1) #横向连接(0是纵向),得到聚类中心对应的类别下的数目 r.columns = list(data.columns) + [u'类别数目'] #重命名表头 print(r) #详细输出原始数据及其类别 r = pd.concat([data, pd.Series(model.labels_, index = data.index)], axis = 1) #详细输出每个样本对应的类别 r.columns = list(data.columns) + [u'聚类类别'] #重命名表头 r.to_excel(outputfile) #保存结果 def density_plot(data): #自定义作图函数 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号 p = data.plot(kind='kde', linewidth = 2, subplots = True, sharex = False) [p[i].set_ylabel(u'密度') for i in range(k)] plt.legend() return plt pic_output = '../tmp/pd_' #概率密度图文件名前缀 for i in range(k): density_plot(data[r[u'聚类类别']==i]).savefig(u'%s%s.png' %(pic_output, i)) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
这是一个很常见的案列的代码,但是我在跑的时候疯狂报错,错误信息如下
ImportError: [joblib] Attempting to do parallel computing without protecting your import on a system that does not support forking. To use parallel-computing in a script, you must protect your main loop using "if __name__ == '__main__'". Please see the joblib documentation on Parallel for more information 1 2
大概就是一个并行计算的错误,因为案例里建立模型时,定义了n_jobs=4,所以报错,但是为什么会产生这个错误我不太清楚,可能是在python3.6版本里原先的库有的地方不兼容吧。
解决方案:
将n_jobs=4删掉就好
相关推荐
mogigo00 2020-11-11
Fredreck 2020-07-19
horizonheart 2020-07-05
swazerz 2020-06-04
路漫 2020-05-30
只能做防骑 2020-05-13
horizonheart 2020-05-09
wonner 2020-05-09
NVEFLY 2020-04-19
从早忙到晚的闲人 2020-04-13
Yiyang 2020-03-03
sayhaha 2020-02-05
路漫 2020-01-23
kingzone 2020-01-01
lixiaotao 2019-12-29
sxyhetao 2019-12-14
wuxiaosi0 2019-12-06
huimor 2019-12-07