python中kmeans怎么导入数据集_用python2.7做kmeans聚类算法怎么导入数据

展开全部

指定文2113件名

问题描述:一堆二维数据,用5261kmeans算法对其进行聚类,4102下面例子以分k=3为例。

原数据:1653

1.5,3.1

2.2,2.9

3,4

2,1

15,25

43,13

32,42

0,0

8,9

12,5

9,12

11,8

22,33

24,25

实现代码:

[python] view plain copy

#coding:utf-8

from numpy import *

import string

import math

def loadDataSet(filename):

dataMat = []

fr = open(filename)

for line in fr.readlines():

element = line.strip('\n').split(',')

number = []

for i in range(len(element)):

number.append(string.atof(element[i]))

dataMat.append(number)

return dataMat

def distEclud(vecA, vecB):

count = len(vecA)

s = 0.0

for i in range(0, count):

s = s + power(vecA[i]-vecB[i], 2)

return sqrt(s)

def clusterOfElement(means, element):

min_dist = distEclud(means[0], element)

lable = 0

for index in range(1, len(means)):

dist = distEclud(means[index], element)

if(dist < min_dist):

min_dist = dist

lable = index

return lable

def getMean(cluster): #cluster=[[[1,2],[1,2],[1,2]....],[[2,1],[2,1],[2,1],[2,1]...]]

num = len(cluster) #1个簇的num,如上为3个

res = []

temp = 0

dim = len(cluster[0])

for i in range(0, dim):

for j in range(0, num):

temp = temp + cluster[j][i]

temp = temp / num

res.append(temp)

return res

def kMeans():

k = 3

data = loadDataSet('data.txt')

print "data is ", data

inite_mean = [[1.1, 1], [1, 1],[1,2]]

count = 0

while(count < 1000):

count = count + 1

clusters = []

means = []

for i in range(k):

clusters.append([])

means.append([])

for index in range(len(data)):

lable = clusterOfElement(inite_mean, data[index])

clusters[lable].append(data[index])

for cluster_index in range(k):

mea = getMean(clusters[cluster_index])

for mean_dim in range(len(mea)):

means[cluster_index].append(mea[mean_dim])

for mm in range(len(means)):

for mmm in range(len(means[mm])):

inite_mean[mm][mmm] = means[mm][mmm]

print "result cluster is ", clusters

print "result means is ", inite_mean

kMeans()

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,如果你需要使用自己降维后的数据进行 Kmeans 聚类处理,你可以先将数据保存为一个 csv 文件,然后使用 pandas 库的 `read_csv` 函数读取该文件。假设你的降维后的数据已经保存为 `pca_data.csv` 文件,那么你可以使用以下代码读取该文件: ```python import pandas as pd # 读入降维后的数据 data = pd.read_csv('pca_data.csv', header=None) X = data.values ``` 上述代码,`read_csv` 函数的第一个参数是 csv 文件的路径,`header=None` 表示该文件没有列名,`X = data.values` 将数据转换为 numpy 数组,方便后续的处理。你可以根据自己的数据情况,修改上述代码的文件路径和其他参数。 接下来,我们可以使用自编码器对降维后的数据进行重构,然后再使用 Kmeans 聚类算法对重构后的数据进行聚类。具体过程如下: 1. 定义自编码器模型,包括编码器和解码器两个部分。编码器将原始数据映射到低维空间,解码器将低维空间的表示映射回原始数据空间。 2. 使用编码器对降维后的数据进行编码,得到低维空间的表示。 3. 使用解码器对低维空间的表示进行解码,得到重构后的数据。 4. 使用 Kmeans 聚类算法对重构后的数据进行聚类。 以下是完整的代码实现: ```python import numpy as np import pandas as pd from sklearn.datasets import load_iris from sklearn.preprocessing import StandardScaler from sklearn.decomposition import PCA from keras.layers import Input, Dense from keras.models import Model # 读入降维后的数据 data = pd.read_csv('pca_data.csv', header=None) X = data.values # 标准化数据 scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # 定义自编码器模型 input_dim = X.shape[1] encoding_dim = 2 input_layer = Input(shape=(input_dim,)) encoder_layer = Dense(encoding_dim, activation='relu')(input_layer) decoder_layer = Dense(input_dim, activation='sigmoid')(encoder_layer) autoencoder = Model(inputs=input_layer, outputs=decoder_layer) # 编译自编码器模型 autoencoder.compile(optimizer='adam', loss='mean_squared_error') # 训练自编码器模型 autoencoder.fit(X_scaled, X_scaled, epochs=50, batch_size=16) # 使用编码器对降维后的数据进行编码 encoder = Model(inputs=input_layer, outputs=encoder_layer) encoded_data = encoder.predict(X_scaled) # 使用解码器对编码后的数据进行解码 decoder = Model(inputs=encoder_layer, outputs=decoder_layer) decoded_data = decoder.predict(encoded_data) # 使用 Kmeans 聚类算法对重构后的数据进行聚类 from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=2) kmeans.fit(decoded_data) labels = kmeans.labels_ # 将聚类结果可视化 import matplotlib.pyplot as plt plt.scatter(X[labels == 0, 0], X[labels == 0, 1], c='r', label='Cluster 1') plt.scatter(X[labels == 1, 0], X[labels == 1, 1], c='b', label='Cluster 2') plt.xlabel('PCA Component 1') plt.ylabel('PCA Component 2') plt.legend() plt.show() ``` 上述代码,我们使用了 PCA 对降维后的数据进行了可视化,因此在可视化聚类结果时需要使用 PCA 的两个主成分。你可以根据自己的数据情况,修改上述代码的文件路径和其他参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值