python - 关于将数组输入 K-Means.Fit 的问题
问题描述
我在databricks
; 从SQL Server 数据库中提取数据。数据很好,我从更大的 中选择了一些数字字段dataframe
,然后将其放入数组中。
在这条线上:
model = kmeans.fit(dataset)
我收到此错误:
raise ValueError("Params must be either a param map or a list/tuple of param maps,
这是我的代码。
import tensorflow as tf
import numpy as np
from pyspark.ml.clustering import KMeans
from pyspark.ml.evaluation import ClusteringEvaluator
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.clustering import KMeans
df = spark.read \
.jdbc("jdbc:sqlxx//sqlxx.database.windows.net:1433;databaseName=name_of_database", "dbo.name_of_table",
properties={"user": "user", "password": "pwd"})
dataset = df.select('Rat', 'Cat', 'Coup', 'Mat', 'Pr', 'Sp', 'Co', 'Weight', 'DV')
dataset = dataset.fillna(0)
data_array = np.array(dataset.select('Rat', 'Cat', 'Coup', 'Mat', 'Pr', 'Sp', 'Co', 'Weight', 'DV').collect())
# Loads data.
dataset = data_array
# Trains a k-means model.
kmeans = KMeans().setK(2).setSeed(1)
model = kmeans.fit(dataset)
# Make predictions
predictions = model.transform(dataset)
# Evaluate clustering by computing Silhouette score
evaluator = ClusteringEvaluator()
silhouette = evaluator.evaluate(predictions)
print("Silhouette with squared euclidean distance = " + str(silhouette))
# Shows the result.
centers = model.clusterCenters()
print("Cluster Centers: ")
for center in centers:
print(center)
当我在Spyder/Anaconda中运行类似的东西时(只是对该环境稍作改动),它运行良好。一定有什么特别的东西databricks
需要,但我不确定到底是什么。
代码示例来自此链接。
解决方案
推荐阅读
- c# - 如何在 asp.net C# 中第一次执行该事件后执行 RadioButtonList_SelectedIndexChanged 事件处理程序?
- angular - angular 6 聊天框应用程序和 id 高度
- caffeine - 咖啡因缓存 - 如何获取元素创建日期的信息
- sql-server - 访问递归公用表表达式 (CTE) 的递归部分中的当前行(不是前一行)
- c# - 如何在不同的函数中引用类对象?
- python - 为什么我不能对页面中的多个元素使用 WebDriver Wait for Selenium Webdriver?
- sql - 我在数据阶段工作,我正在尝试将数据从一列输入到另一列
- python - 如何从pygame构建可执行文件
- haskell - 连接函数的 Haskell 问题
- javascript - 如何使用带有钩子的 React Infinite Scroll