python数据分析与实战学习笔记一:连续属性离散化

今天学习了将连续数据离散化的方法,主要有三个:等宽法、等频法、聚类法
等宽法是将数据的值域等分,每个部分拥有相同的宽度,然后为每个部分打上不同的符号或数值进行离散化;
等频法则是要求每个部分的记录数相同;
聚类法则是使用聚类算法比如k-means算法进行聚类获得簇,然后将合并到同一个簇做同一个标记。
三种离散化方法都需要用户指定产生的区间数

书中用K-mean进行数据离散化的代码在python3环境运行时出现了一些错误:

from sklearn.cluster import KMeans #引入KMeans
kmodel = KMeans(n_clusters = k, n_jobs = 4) #建立模型,n_jobs是并行数,一般等于CPU数较好
kmodel.fit(data.reshape((len(data), 1))) #训练模型
c = pd.DataFrame(kmodel.cluster_centers_).sort(0) #输出聚类中心,并且排序(默认是随机序的)
w = pd.rolling_mean(c, 2).iloc[1:] #相邻两项求中点,作为边界点
w = [0] + list(w[0]) + [data.max()] #把首末边界点加上
d3 = pd.cut(data, w, labels = range(k))

1.df数据结构不存在reshape()方法,reshape()方法是属于数组的。所以可以先获取df的value,因为df的value是多维数组,接着便可以直接使用reshape(),来将多维数组转换为一维数组,这里转换的原因是训练模型需要输入一位数组;

2.dataframe内的数据排序问题:不能直接对dataframe数据集使用df.sort()方法,error提示说明df结构不存在这个方法,要对dataframe结构进行排序应该使用df.sort_values(by=0),其中参数by=”的值为属性名。

3.df的rolling_mean()移动窗口函数问题:这里移动窗口函数的使用要改为c.rolling(2).mean(),也就是把rolling_mean()函数拆开来;

猜你喜欢

转载自blog.csdn.net/braveheartm/article/details/81393446