datafile =
'../data/discretization_data.xls'
data = pd.read_excel(datafile)
data = data[
u'肝气郁结证型系数'
].copy()
k =
4
d1 = pd.cut(data, k, labels = range(k))
from
sklearn.cluster
import
KMeans
kmodel = KMeans(n_clusters = k, n_jobs =
4
)
kmodel.fit(data.reshape((len(data),
1
)))
c = pd.DataFrame(kmodel.cluster_centers_).sort_values(
0
)
w = pd.rolling_mean(c,
2
).iloc[
1
:]
w = [
0
] + list(w[
0
]) + [data.max()]
d3 = pd.cut(data, w, labels = range(k))
def
cluster_plot
(d, k)
:
import
matplotlib.pyplot
as
plt
plt.rcParams[
'font.sans-serif'
] = [
'SimHei'
]
plt.rcParams[
'axes.unicode_minus'
] =
False
plt.figure(figsize = (
8
,
3
))
for
j
in
range(
0
, k):
plt.plot(data[d==j], [j
for
i
in
d[d==j]],
'o'
)
plt.ylim(-
0.5
, k-
0.5
)
return
plt
cluster_plot(d1, k).show()
cluster_plot(d3, k).show()
(1)等宽法结果图
(2)基于聚类分析方法的结果图
补充:cut函数使用方法
cut()函数可以将一个数组中的数据切分成几个部分。
将数据分为几个部分,就称为几个面元。
(1)cut(数据数组,面元数组)
array = [3, 60, 43, 100, 52, 36, 37, 0, 80, 100]
bins = [0, 25, 50, 75, 100]
cat = pd.cut(array, bins)
[(0, 25], (50, 75], (25, 50], (75, 100], (50, 75], (25, 50], (25, 50], NaN, (75,100], (75, 100]]
Categories (4, interval[int64]): [(0, 25] < (25, 50] < (50, 75] < (75, 100]]
(2)不指定面元的界限,直接传入一个整数参数。
cut()会按照指定的数字,将元素划分为相应的几部分。
array = [3, 60, 43, 100, 52, 36, 37, 0, 80, 100]
pd.cut(array,5)
[(-0.1, 20.0], (40.0, 60.0], (40.0, 60.0], (80.0, 100.0], (40.0, 60.0], (20.0, 40.0], (20.0, 40.0], (-0.1, 20.0], (60.0, 80.0], (80.0, 100.0]]
Categories (5, interval[float64]): [(-0.1, 20.0] < (20.0, 40.0] < (40.0, 60.0] <(60.0, 80.0] <(80.0, 100.0]]
需要离散化的数据示例:实现代码#-*- coding: utf-8 -*-#数据规范化import pandas as pddatafile = '../data/discretization_data.xls' #参数初始化data = pd.read_excel(datafile) #读取数据data = data[u'肝气郁结证型系数'].copy()k = 4...
文章目录1. 特征
离散化
的作用2. 特征
离散化
可以引入非线性的证明
李沐曾说过,模型是使用离散特征还是
连续
特征,其实是一个“海量离散特征+简单模型” 同 “少量
连续
特征+复杂模型”的权衡。既可以
离散化
用线性模型,也可以用
连续
特征加深度学习。就看是喜欢折腾特征还是折腾模型了。通常来说,前者容易,而且可以n个人一起并行做,有成功经验;后者目前看很赞,能走多远还须拭目以待。
1. 特征
离散化
的作用
在实际工作中,需要使用譬如LR这种线性分类器的时候,往往需要将特征
离散化
成0/1特征,之后再进行模型训练。这样的好.
文章目录离散特征为什么要
连续
化
离散化
处理的一般过程
离散化
方
法
的分类无监督的方
法
有监督的方
法
卡方检验(CHI)信息增益
法
(IG)
离散化
方
法
的评价
离散化
工具sklearn.preprocessing.KBinsDiscretizerpd.cut参考
离散特征为什么要
连续
化
作者:严林
链接:https://www.zhihu.com/question/31989952/answer/54184582
至此,
python
作业已经全部更新完毕
该题目的
数据
我放到资源里面的,但是我不知道那个收费不收费,我有时间了把他存到百度云盘/阿里云盘里面供大家下载
** 2、统计
年龄
分布情况(5岁的间隔统计),绘制出
年龄
分布图**
代码如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = ['SimHei']
plt.rcParams["axes.unicode_mi
文章目录一、为什么
离散化
,
离散化
的优势特征
离散化
离散化
的优势
一、为什么
离散化
,
离散化
的优势
在机器学习中,在很多案例中,人们在处理
数据
的时候,常常把
连续
特征
离散化
。那么为什么要用离散特征呢?这么做有什么优势?
特征
离散化
数据
离散化
是将
连续
的
数据
进行分段,使其变为一段段
离散化
的区间。
连续
特征
离散化
的基本假设,是默认
连续
特征不同区间的取值对结果的贡献是不一样的。
特征的
连续
值在不同的区间的重要性...
离散化
的原因
1.模型限制
比如决策树、朴素贝叶斯等算
法
,都是基于离散型的
数据
展开的。如果要使用该类算
法
,必须将离散型的
数据
进行。有效的
离散化
能减小算
法
的时间和空间开销,提高系统对样本的分类聚类能力和抗噪声能力。
2.
离散化
的特征更易理解
比如工资收入,月薪2000和月...
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import AgglomerativeClustering
from sklearn.datasets import make_blobs
from scipy.cluster.hierarchy import dendrogram
# 生成随机
数据
集
X, y = make_blobs(n_samples=50, centers=3, random_state=42)
# 创建聚合聚类模型
model = AgglomerativeClustering(n_clusters=3)
# 拟合
数据
model.fit(X)
# 可视化聚类结果
plt.scatter(X[:, 0], X[:, 1], c=model.labels_, cmap='rainbow')
plt.show()
# 绘制树状图
def plot_dendrogram(model, **kwargs):
画出树状图
# 创建距离矩阵
distances = model.distances_
# 计算连线
linkage_matrix = np.column_stack([model.children_, distances, np.zeros_like(distances)])
dendrogram(linkage_matrix, **kwargs)
plt.title('Hierarchical Clustering Dendrogram')
plot_dendrogram(model, truncate_mode='level', p=3)
plt.xlabel("Number of points in node (or index of point if no parenthesis).")
plt.show()
在代码中,我们使用 `make_blobs` 方
法
生成了一个包含 50 个样本和 3 个中心的
数据
集。然后,我们创建了一个 `AgglomerativeClustering` 模型,并将其拟合到
数据
集中。最后,我们使用 `plt.scatter` 方
法
可视化了聚类结果,并使用 `plot_dendrogram` 方
法
绘制了树状图。
树状图可以帮助我们更好地理解聚类的过程和结果。在树状图中,横轴表示样本点的索引,纵轴表示样本点
之间
的距离。每个竖直线段表示两个样本点
之间
的距离,横坐标为这两个样本点的索引。在树状图的底部,我们可以看到每个样本点的编号。在树状图的顶部,我们可以看到聚类结果。例如,在本例中,我们可以看到最终的聚类结果包含 3 个簇。