【发布时间】:2016-08-11 10:27:19
【问题描述】:
我是使用 scikit-learn 的新手,我正在尝试根据人们对电影的兴趣对他们进行聚类。我创建了一个稀疏矩阵,它有不同的列(每部电影一个)和行。对于给定的单元格,如果用户喜欢这部电影,则为 0 或 1。
sparse_matrix = numpy.zeros(shape=(len(list_user), len(list_movie)))
for id in list_user:
index_id = list_user.index(id)
for movie in list_movie[index_id]:
if movie.isdigit():
index_movie = list_movie.index(int(movie))
sparse_matrix[index_id][index_movie] = 1
pickle.dump(sparse_matrix, open("data/sparse_matrix", "w+"))
return sparse_matrix
我认为这就像一个向量数组,从文档来看这是一个可接受的输入。
从向量数组或距离矩阵执行 DBSCAN 聚类。
所以我尝试做一些事情来使用 scikit-learn:
sparse_matrix = pickle.load(open("data/sparse_matrix"))
X = StandardScaler().fit_transform(sparse_matrix)
db = DBSCAN(eps=1, min_samples=20).fit(X)
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_
print labels
我使用来自 scikit-learn 的示例 DBSCAN 进行了此操作。我有两个问题,第一个是:“我的矩阵格式是否正确并适合这种算法?”当我考虑维度的数量时,我有这个问题。第二个问题是“我如何设置 epsilon 参数(我的点之间的最小距离)?”
【问题讨论】:
标签: python scikit-learn cluster-analysis sparse-matrix dbscan