手机html5 网站导航代码,用什么软件开发手机app,163 com免费邮箱注册,高邮建设银行网站目录 聚类
在出生数据集中寻找簇
主题挖掘
回归 聚类
聚类是机器学习中另一个重要的部分#xff1a;在现实世界中#xff0c;我们并不总是有目标特征的奢侈条件#xff0c;因此我们需要回归到无监督学习的范式#xff0c;在那里我们尝试在数据中发现模式。
在出生数据…目录 聚类
在出生数据集中寻找簇
主题挖掘
回归 聚类
聚类是机器学习中另一个重要的部分在现实世界中我们并不总是有目标特征的奢侈条件因此我们需要回归到无监督学习的范式在那里我们尝试在数据中发现模式。
在出生数据集中寻找簇
在这个例子中我们将使用 k-means 模型在出生数据中寻找相似性
import pyspark.ml.clustering as clus
kmeans clus.KMeans(k 5, featuresColfeatures)
pipeline Pipeline(stages[assembler,featuresCreator, kmeans]
)
model pipeline.fit(births_train)
估计模型后让我们看看我们是否能找到不同簇之间的一些差异
test model.transform(births_test)
test \.groupBy(prediction) \.agg({*: count, MOTHER_HEIGHT_IN: avg}).collect()
前面的代码产生了以下输出
嗯MOTHER_HEIGHT_IN 在第 2 个簇中显著不同。仔细研究结果这里我们显然不会这么做可能会揭示更多的差异并允许我们更好地理解数据。
主题挖掘
聚类模型不仅限于数值数据。在自然语言处理领域像主题提取这样的问题依赖于聚类来检测具有相似主题的文档。我们将经历这样一个例子。
首先让我们创建我们的数据集。数据由互联网上随机选择的段落组成其中三个涉及自然和国家公园的主题其余三个涵盖技术。
text_data spark.createDataFrame([[To make a computer do anything, you have to write a computer program. To write a computer program, you have to tell the computer, step by step, exactly what you want it to do. The computer then executes the program, following each step mechanically, to accomplish the end goal. When you are telling the computer what to do, you also get to choose how its going to do it. Thats where computer algorithms come in. The algorithm is the basic technique used to get the job done. Lets follow an example to help get an understanding of the algorithm concept.],(...),[Australia has over 500 national parks. Over 28 million hectares of land is designated as national parkland, accounting for almost four per cent of Australias land areas. In addition, a further six per cent of Australia is protected and includes state forests, nature parks and conservation reserves.National parks are usually large areas of land that are protected because they have unspoilt landscapes and a diverse number of native plants and animals. This means that commercial activities such as farming are prohibited and human activity is strictly monitored.]
], [documents])
首先我们将再次使用 RegexTokenizer 和 StopWordsRemover 模型
tokenizer ft.RegexTokenizer(inputColdocuments, outputColinput_arr, pattern\s|[,.\])
stopwords ft.StopWordsRemover(inputColtokenizer.getOutputCol(), outputColinput_stop)
接下来是我们管道中的 CountVectorizer一个计算文档中单词数量并返回计数向量的模型。向量的长度等于所有文档中所有不同单词的总数这可以在以下片段中看到
stringIndexer ft.CountVectorizer(inputColstopwords.getOutputCol(), outputColinput_indexed)
tokenized stopwords \.transform(tokenizer\.transform(text_data))stringIndexer \.fit(tokenized)\.transform(tokenized)\.select(input_indexed)\.take(2)
前面的代码将产生以下输出
如你所见文本中有 262 个不同的单词现在每个文档由每个单词出现次数的计数表示。
现在轮到开始预测主题了。为此我们将使用 LDA 模型——潜在狄利克雷分配模型
clustering clus.LDA(k2, optimizeronline, featuresColstringIndexer.getOutputCol())
k 参数指定我们期望看到的主题数量优化器参数可以是 online 或 em后者代表期望最大化算法。
将这些谜题拼凑在一起到目前为止这是我们最长的管道
pipeline ml.Pipeline(stages[tokenizer, stopwords,stringIndexer, clustering]
)
我们是否正确地发现了主题嗯让我们看看
topics pipeline \.fit(text_data) \.transform(text_data)
topics.select(topicDistribution).collect()
这是我们得到的 看起来我们的方法正确地发现了所有的主题不过不要习惯看到这么好的结果遗憾的是现实世界的数据很少是这样的。
回归
我们不能在没有构建回归模型的情况下结束机器学习库的一章。
在这一部分我们将尝试预测 MOTHER_WEIGHT_GAIN给定这里描述的一些特征这些特征包含在这里列出的特征中
features [MOTHER_AGE_YEARS,MOTHER_HEIGHT_IN,MOTHER_PRE_WEIGHT,DIABETES_PRE,DIABETES_GEST,HYP_TENS_PRE, HYP_TENS_GEST, PREV_BIRTH_PRETERM,CIG_BEFORE,CIG_1_TRI, CIG_2_TRI, CIG_3_TRI]
首先由于所有特征都是数值型的我们将它们整合在一起并使用 ChiSqSelector 仅选择最重要的六个特征
featuresCreator ft.VectorAssembler(inputCols[col for col in features[1:]], outputColfeatures
)
selector ft.ChiSqSelector(numTopFeatures6, outputColselectedFeatures, labelColMOTHER_WEIGHT_GAIN
)
为了预测体重增加我们将使用梯度提升树回归器
import pyspark.ml.regression as reg
regressor reg.GBTRegressor(maxIter15, maxDepth3,labelColMOTHER_WEIGHT_GAIN)
最后再次将所有内容整合到一个 Pipeline 中
pipeline Pipeline(stages[featuresCreator, selector,regressor])
weightGain pipeline.fit(births_train)
创建了 weightGain 模型后让我们看看它在我们测试数据上的表现如何
evaluator ev.RegressionEvaluator(predictionColprediction, labelColMOTHER_WEIGHT_GAIN)
print(evaluator.evaluate(weightGain.transform(births_test), {evaluator.metricName: r2}))
我们得到以下输出 遗憾的是这个模型不比抛硬币的结果好。看来如果没有与 MOTHER_WEIGHT_GAIN 标签更相关的额外独立特征我们将无法充分解释其方差。