import os
import numpy as np
from scipy.signal import *
import csv
import matplotlib.pyplot as plt
from scipy import signal
from brainflow.board_shim import BoardShim, BrainFlowInputParams, LogLevels, BoardIds
from brainflow.data_filter import DataFilter, FilterTypes, AggOperations, WindowFunctions, DetrendOperations
from sklearn.cluster import KMeans
#Options to read: 'EEG-IO', 'EEG-VV', 'EEG-VR', 'EEG-MB'
data_folder = 'EEG-IO'
# Parameters and bandpass filtering
fs = 250.0
# Reading data files
file_idx = 0
list_of_files = [f for f in os.listdir(data_folder) if os.path.isfile(os.path.join(data_folder, f)) and '_data' in f] #List of …Run Code Online (Sandbox Code Playgroud) 我需要实现scikit-learn的kMeans来集群文本文档.该示例代码工作正常,因为它只是需要一些20newsgroups数据作为输入.我想使用相同的代码来集群文档列表,如下所示:
documents = ["Human machine interface for lab abc computer applications",
"A survey of user opinion of computer system response time",
"The EPS user interface management system",
"System and human system engineering testing of EPS",
"Relation of user perceived response time to error measurement",
"The generation of random binary unordered trees",
"The intersection graph of paths in trees",
"Graph minors IV Widths of trees and well quasi ordering",
"Graph minors A survey"]
Run Code Online (Sandbox Code Playgroud)
在kMeans示例代码中我需要做哪些更改才能使用此列表作为输入?(简单地说'dataset = …
可能重复:
具有相等簇大小的K均值算法变化
编辑:像casperOne指出,这个问题是重复的.无论如何,这是一个更普遍的问题,涵盖这一个:https://stats.stackexchange.com/questions/8744/clustering-procedure-where-each-cluster-has-an-equal-number-of-points
我的要求
在一个项目中,我需要将n个点(x,y)分组为相同大小的k个簇(n/k).其中x和y是双浮点数,n的范围可以是100到10000,k的范围是2到100.在算法运行之前k也是已知的.
我的实验
我开始使用http://en.wikipedia.org/wiki/K-means_clustering算法来解决这个问题,该算法非常快速地生成大致相同大小的k个簇.
但我的问题是,K-means产生大小相同的簇,我需要簇的大小完全相同(或者更精确:我需要它们的大小介于地板之间(n/k)和ceil(n/k)).
在你向我指出之前,是的,我在这里尝试了第一个答案K-means算法变化具有相同的簇大小,这听起来是个好主意.
主要思想是通过K-means对集群产生的数组进行后处理.从最大的集群到最小的集群.我们通过将额外的点移动到其他最近的集群来减少具有超过n/k成员的集群的大小.单独留下已经减少的集群.
这是我实现的伪代码:
n is the number of point
k is the number of cluster
m = n / k (the ideal cluster size)
c is the array of cluster after K-means
c' = c sorted by size in descending order
for each cluster i in c' where i = 1 to k - 1
n = size of cluster i - m (the number …Run Code Online (Sandbox Code Playgroud) 如何进行K-means聚类时间序列数据?我理解当输入数据是一组点时它是如何工作的,但我不知道如何用1XM聚类时间序列,其中M是数据长度.特别是,我不确定如何更新时间序列数据的集群平均值.
我有一组标记时间序列的,我想用K-means算法来检查我是否会得到一个类似的标签或没有.我的X矩阵将是NXM,其中N是时间序列的数量,M是如上所述的数据长度.
有谁知道如何做到这一点?例如,我如何修改这个k-means MATLAB代码,以便它适用于时间序列数据?此外,我希望能够使用欧几里德距离以外的不同距离指标.
为了更好地说明我的疑虑,这里是我为时间序列数据修改的代码:
% Check if second input is centroids
if ~isscalar(k)
c=k;
k=size(c,1);
else
c=X(ceil(rand(k,1)*n),:); % assign centroid randomly at start
end
% allocating variables
g0=ones(n,1);
gIdx=zeros(n,1);
D=zeros(n,k);
% Main loop converge if previous partition is the same as current
while any(g0~=gIdx)
% disp(sum(g0~=gIdx))
g0=gIdx;
% Loop for each centroid
for t=1:k
% d=zeros(n,1);
% Loop for each dimension
for s=1:n
D(s,t) = sqrt(sum((X(s,:)-c(t,:)).^2));
end
end
% Partition data to closest centroids
[z,gIdx]=min(D,[],2);
% Update …Run Code Online (Sandbox Code Playgroud) 我一直在使用k-means在R中聚类我的数据,但我希望能够使用Baysiean Information Criterion(BIC)和AIC来评估我的聚类的拟合与模型的复杂性.目前我在R中使用的代码是:
KClData <- kmeans(Data, centers=2, nstart= 100)
Run Code Online (Sandbox Code Playgroud)
但我希望能够提取BIC和Log Likelihood.任何帮助将不胜感激!
我有一个介于0和1之间的13.876(13,876)值的数组.我想sklearn.cluster.KMeans仅应用此向量来查找值被分组的不同群集.然而,似乎KMeans使用多维数组而不是一维数组.我想有一个技巧可以使它工作,但我不知道如何.我看到KMeans.fit()接受"X:array-like或sparse matrix,shape =(n_samples,n_features)",但它希望n_samples大于1
我尝试将我的数组放在np.zeros()矩阵上并运行KMeans,但是然后将所有非null值放在class 1上,其余的放在class 0上.
任何人都可以帮助在一维数组上运行此算法?非常感谢!
我在一组文本文档(大约100)上应用了聚类.我将它们转换为Tfidf矢量使用TfIdfVectorizer并提供矢量作为输入scikitlearn.cluster.KMeans(n_clusters=2, init='k-means++', max_iter=100, n_init=10).现在当我
model.fit()
print model.score()
Run Code Online (Sandbox Code Playgroud)
在我的向量上,如果所有文本文档非常相似,我会得到一个非常小的值,如果文档非常不同,我得到一个非常大的负值.
它的基本目的是找到哪一组文件是相似的,但是有人可以帮我理解这个model.score()值究竟是什么意味着合适吗?如何使用此值来证明我的发现?
使用内置渐变下降优化器的介绍教程非常有意义.然而,k-means不仅仅是我可以插入梯度下降的东西.看起来我必须编写自己的优化器,但鉴于TensorFlow原语,我不太清楚如何做到这一点.
我应该采取什么方法?
我想在C++接口(cv命名空间)中使用k-means和OpenCV对图像进行分色,我得到了奇怪的结果.我需要它来减少一些噪音.这是我的代码:
#include "cv.h"
#include "highgui.h"
using namespace cv;
int main() {
Mat imageBGR, imageHSV, planeH, planeS, planeV;
imageBGR = imread("fruits.jpg");
imshow("original", imageBGR);
cv::Mat labels, data;
cv::Mat centers(8, 1, CV_32FC1);
imageBGR.convertTo(data, CV_32F);
cv::kmeans(data, 8, labels,
cv::TermCriteria(CV_TERMCRIT_ITER, 10, 1.0),
3, cv::KMEANS_PP_CENTERS, ¢ers);
imshow("posterized hue", data);
data.convertTo(data, CV_32FC3);
waitKey();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是我得到了一个奇怪的结果

第一张图片:原创
第二张图片:k-means之后.
有什么建议?
#include "cv.h"
#include "highgui.h"
#include <iostream>
using namespace cv;
using namespace std;
int main() {
Mat src;
src = imread("fruits.jpg");
imshow("original", src);
blur(src, src, Size(15,15));
imshow("blurred", …Run Code Online (Sandbox Code Playgroud) 我正在使用sklearn.cluster KMeans包.完成聚类后,如果我需要知道哪些值组合在一起,我该怎么办?
说我有100个数据点,KMeans给了我5个集群.现在我想知道集群5中有哪些数据点.我该怎么做.
是否有一个函数来提供集群ID,它将列出该集群中的所有数据点
谢谢.
k-means ×10
python ×5
scikit-learn ×4
data-mining ×2
algorithm ×1
arrays ×1
c++ ×1
matlab ×1
numpy ×1
opencv ×1
python-2.7 ×1
python-3.x ×1
r ×1
tensorflow ×1
time-series ×1