vectors = model.syn0
n_clusters_kmeans = 20 # more for visualization 100 better for clustering
min_kmeans = MiniBatchKMeans(init='k-means++', n_clusters=n_clusters_kmeans, n_init=10)
min_kmeans.fit(vectors)
X_reduced = TruncatedSVD(n_components=50, random_state=0).fit_transform(vectors)
X_embedded = TSNE(n_components=2, perplexity=40, verbose=2).fit_transform(X_reduced)
fig = plt.figure(figsize=(10, 10))
ax = plt.axes(frameon=False)
plt.setp(ax, xticks=(), yticks=())
plt.subplots_adjust(left=0.0, bottom=0.0, right=1.0, top=0.9, wspace=0.0, hspace=0.0)
plt.scatter(X_embedded[:, 0], X_embedded[:, 1], c=None, marker="x")
plt.show()
Run Code Online (Sandbox Code Playgroud)
我想绘制矢量.我正在使用sklearn.cluster MiniBatchKMeans.上面的代码给出了以下弃用错误:
/usr/local/lib/python3.5/site-packages/sklearn/cluster/k_means_.py:1328:DreprecationWarning:不推荐使用此函数.请调用randint(0,99 + 1)代替0,n_samples - 1,self.batch_size)
任何建议表示赞赏.谢谢
我正在使用movielens数据集(ratings.dat)和pandas数据框读取和处理数据。我必须将这些数据分为测试和训练集。通过使用pandas dataframe.sample函数,可以将数据分为随机拆分。例如:
训练= df.sample(分数= 0.8,random_state = 200)
测试= df.drop(train.index)
现在,我尝试对user_id上的数据进行排序,然后对时间戳进行排序,我需要分别在训练集和测试集中将数据划分为每个用户80%-20%。
因此,例如,如果user1评定了10部电影,则该用户的条目应根据时间戳从最早到最新进行排序
评分= pd.read_csv('文件名',sep ='\ t',engine ='python',标头= 0)
sorted_df = rating.sort(['user_id','timestamp'],ascending = [True,True])
并且应该以这样的方式进行拆分:时间戳记最旧的前8个条目将位于训练集中,而最新的2个条目将位于测试集中。
我不知道该怎么办。有什么建议么?
谢谢
数据:
user_id item_id rating Timestamp
15 1 539 5 838984068
16 1 586 5 838984068
5 1 355 5 838984474
9 1 370 5 838984596
12 1 466 5 838984679
14 1 520 5 838984679
19 1 594 5 838984679
7 1 362 5 838984885
20 1 616 5 838984941
23 2 260 5 868244562 …Run Code Online (Sandbox Code Playgroud) scores.append((item, score))
output_file.write(scores.sort()[:20] + '\n')
Run Code Online (Sandbox Code Playgroud)
我需要对分数进行排序并将前 20 个分数写入文件中。上面是我的代码,我最终得到了 TypeError: 'NoneType' object is not subscriptable
谢谢。