首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于DBSCAN聚类,在熊猫中泡菜文件的实际结果和结果并不匹配。

对于DBSCAN聚类,在熊猫中泡菜文件的实际结果和结果并不匹配。
EN

Data Science用户
提问于 2019-09-10 08:59:03
回答 2查看 705关注 0票数 0

我已经构建了一个DBSCAN集群模型。输出结果与使用泡菜文件后的结果不匹配。

基于HD和MC列,我对WT列进行了聚类。

代码语言:javascript
复制
data = HD,MC
Target = WT

下面,对于第一次记录,集群为0。

但是在从'pkl‘文件中运行它之后,它将显示预测的结果为-1。

Dataframe:

代码语言:javascript
复制
      HD         MC             WT         Cluster
      200        Other          4.5        0
      150        Pep            5.6        0
      100        Pla            35         -1
      50         Same           15         0

代码:

代码语言:javascript
复制
 le = preprocessing.LabelEncoder()
 df['MC encoded'] = le.fit_transform(df['MC'])

 col_1 = ['HD','MC encoded']
 data = df[col_1]
 col_2 = ['WT']
 target = df[col_2]
 data = data.fillna(value=0)


 model = DBSCAN(eps=1, min_samples=20).fit(data)
 outliers_df = pd.DataFrame(data)
 print(Counter(model.labels_))

 x = model.fit_predict(target)
 print(Counter(x))

结果:

代码语言:javascript
复制
  Counter({-1: 604, 0: 142, 1: 83, 9: 36, 2: 27, 7: 26, 10: 26, 8: 24, 4: 23, 5: 23, 3: 22, 11: 21, 6: 20, 12: 20, 13: 20})
  Counter({0: 1093, -1: 24})

代码:

代码语言:javascript
复制
  df["Cluster"] = x

  filename1 = '/model.pkl'
  model_df = open(filename1, 'wb')
  pickle.dump(model,model_df)
  model_df.close()

  output = open('/MC.pkl', 'wb')
  pickle.dump(le, output)
  output.close()

  with open('model.pkl', 'rb') as file:  
     pickle_model = pickle.load(file)


  pkl_file = open('MC.pkl', 'rb')
  le_mc = pickle.load(pkl_file) 
  pkl_file.close()


 def testing(HD,MC,WT):
     test = {'HD':[HD],'MC':[MC], 'WT':[WT]} 
     test = pd.DataFrame(test)
     test['MC_encoded'] = le_mc.transform(test['MC'])
     pred_val = pickle_model.fit_predict(test[['HD','MC_encoded']])
     print(pred_val)
     return(pred_val)



      pred_val = testing(200,'Other',4.5)

结果:

代码语言:javascript
复制
    [-1]
EN

回答 2

Data Science用户

发布于 2019-09-10 13:37:28

似乎你的泡菜文件没有作为熊猫的数据加载。为什么不直接使用df_pickle = pd.read_pickle('/MC.pkl')呢?其余的都应该在此之后到位。

票数 0
EN

Data Science用户

发布于 2019-10-10 15:12:03

而不看其他东西:

代码语言:javascript
复制
pred_val = pickle_model.fit_predict(test[['HD','MC_encoded']])

您正在使用pickle_model ()方法在test_data上训练您的fit_predict。首先,直接用.predict()替换它,这样就可以按原样使用模型,而不是对单个样本进行训练。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/58960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档