我有一个名为df的数据框,它像这样,但实际上是[9147行x 3列]
dayNumber - 1
我想做的是从表中选择数据的某些值。
indexID RngUni[m] PowUni[dB]
157203 1.292283 132
157201 1.271878 132
157016 1.285481 134
157404 1.305886 136
157500 1.353496 136
157524 1.251474 136
157227 1.292283 132
157543 1.339893 136
157903 1.353496 138
156928 1.299084 134
157373 1.299084 136
156937 1.414709 134
157461 1.353496 136
157718 1.360297 138
157815 1.326290 138
157806 1.271878 134
156899 1.360298 134
157486 1.414709 138
157628 1.271878 136
157405 1.299084 134
157244 1.299084 134
157522 1.258275 136
157515 1.367099 138
157086 1.305886 136
157602 1.251474 134
157131 1.265077 132
157170 1.380702 138
156904 1.360297 134
157209 1.401106 138
157018 1.265077 134
给出:
假定主要组是大多数数据点聚类的区域,我需要做的是选择主要组中80%的点和主要组之外20%的点。
我需要输出为列表的所有点的indexID。我该怎么办?
答案 0 :(得分:2)
这是我将要完成的任务的方式:
from io import StringIO
import pandas as pd
from sklearn.cluster import KMeans
s = '''indexID RngUni[m] PowUni[dB]
157203 1.292283 132
157201 1.271878 132
157016 1.285481 134
157404 1.305886 136
157500 1.353496 136
157524 1.251474 136
157227 1.292283 132
157543 1.339893 136
157903 1.353496 138
156928 1.299084 134
157373 1.299084 136
156937 1.414709 134
157461 1.353496 136
157718 1.360297 138
157815 1.326290 138
157806 1.271878 134
156899 1.360298 134
157486 1.414709 138
157628 1.271878 136
157405 1.299084 134
157244 1.299084 134
157522 1.258275 136
157515 1.367099 138
157086 1.305886 136
157602 1.251474 134
157131 1.265077 132
157170 1.380702 138
156904 1.360297 134
157209 1.401106 138
157018 1.265077 134'''
ss = StringIO(s)
df = pd.read_csv(ss, sep=r"\s+")
kmeans = KMeans(n_clusters=2, random_state=0).fit(df.values[:,[1,2]])
df['labels']=kmeans.labels_
df['labels']=kmeans.labels_
df.labels.apply(lambda x: 'red' if x==1 else 'blue')
plt.scatter(x=df['RngUni[m]'], y=df['PowUni[dB]'], c=df['labels'])
只需更改聚类算法并使用参数即可获得所需的聚类和颜色。
希望有帮助。