我是Spark的新手,目前我正在尝试使用Python编写对一组数据执行KMeans的简单代码。
from pyspark import SparkContext, SparkConf
from pyspark.sql import SQLContext
import re
from pyspark.mllib.clustering import KMeans, KMeansModel
from pyspark.mllib.linalg import DenseVector
from pyspark.mllib.linalg import SparseVector
from numpy import array
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.feature import MinMaxScaler
import pandas as pd
import numpy
df = pd.read_csv("/<path>/Wholesale_customers_data.csv")
sql_sc = SQLContext(sc)
cols = ["Channel", "Region", "Fresh", "Milk", "Grocery", "Frozen", "Detergents_Paper", "Delicassen"]
s_df = sql_sc.createDataFrame(df)
vectorAss = VectorAssembler(inputCols=cols, outputCol="feature")
vdf = vectorAss.transform(s_df)
km = KMeans.train(vdf, k=2, maxIterations=10, runs=10, initializationMode="k-means||")
model = kmeans.fit(vdf)
cluster …Run Code Online (Sandbox Code Playgroud) 我的同事说我最近写的代码崩溃了,那是因为在函数的参数列表中我没有指定Optional[str] = None. 我只有Optional[str].
所以基本上我的函数是这样的:
def a(b: Optional[str]):
if b is None:
<do something>
else:
<do something>
Run Code Online (Sandbox Code Playgroud)
我一直认为 Optional 参数的默认值是 None,所以我没有指定默认值。它没有为我崩溃,但为我的同事崩溃了,所以我有点困惑。
我的python版本是>=3。