利用基本统计,分类和回归、聚类、协同过滤完成mllib编程实践
时间: 2023-08-22 16:05:19 浏览: 120
聚类、分类、协同过滤、进化编程等经典算法
5星 · 资源好评率100%
好的,下面是一个综合的MLlib编程实践,包括基本统计、分类和回归、聚类和协同过滤。
首先,我们将导入所需的库和数据集。我们将使用UCI机器学习库中的Iris数据集,该数据集包含150个样本,每个样本包含4个特征(萼片长度、萼片宽度、花瓣长度和花瓣宽度),以及3个类别(Setosa,Versicolour和Virginica)。
```python
from pyspark.sql import SparkSession
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.clustering import KMeans
from pyspark.ml.classification import DecisionTreeClassifier
from pyspark.ml.regression import LinearRegression
from pyspark.ml.recommendation import ALS
from pyspark.ml.evaluation import ClusteringEvaluator, MulticlassClassificationEvaluator, RegressionEvaluator
# 创建SparkSession
spark = SparkSession.builder.appName('mllib_example').getOrCreate()
# 加载数据集
data = spark.read.format('csv').option('header', True).option('inferSchema', True).load('path/to/iris.csv')
```
接下来,我们将使用VectorAssembler将特征列合并为一个特征向量列,并将数据集拆分为训练集和测试集:
```python
# 合并特征列
assembler = VectorAssembler(inputCols=['sepal_length', 'sepal_width', 'petal_length', 'petal_width'], outputCol='features')
data = assembler.transform(data)
# 将数据集分为训练集和测试集
train_data, test_data = data.randomSplit([0.7, 0.3])
```
接下来,我们将使用KMeans算法对数据进行聚类,并使用ClusteringEvaluator评估模型:
```python
# 创建KMeans模型
kmeans = KMeans(featuresCol='features', k=3)
# 训练模型
model = kmeans.fit(train_data)
# 预测数据
predictions = model.transform(test_data)
# 评估模型
evaluator = ClusteringEvaluator(predictionCol='prediction', featuresCol='features', metricName='silhouette')
silhouette = evaluator.evaluate(predictions)
# 打印轮廓系数
print('Silhouette score: {}'.format(silhouette))
```
接下来,我们将使用决策树算法对数据进行分类,并使用MulticlassClassificationEvaluator评估模型:
```python
# 创建决策树模型
dt = DecisionTreeClassifier(featuresCol='features', labelCol='class', maxDepth=5)
# 训练模型
model = dt.fit(train_data)
# 预测测试集
predictions = model.transform(test_data)
# 评估模型
evaluator = MulticlassClassificationEvaluator(predictionCol='prediction', labelCol='class', metricName='accuracy')
accuracy = evaluator.evaluate(predictions)
# 打印准确率
print('Accuracy: {}'.format(accuracy))
```
接下来,我们将使用线性回归算法对数据进行回归,并使用RegressionEvaluator评估模型:
```python
# 创建线性回归模型
lr = LinearRegression(featuresCol='features', labelCol='petal_width', maxIter=10, regParam=0.3, elasticNetParam=0.8)
# 训练模型
model = lr.fit(train_data)
# 预测测试集
predictions = model.transform(test_data)
# 评估模型
evaluator = RegressionEvaluator(predictionCol='prediction', labelCol='petal_width', metricName='rmse')
rmse = evaluator.evaluate(predictions)
# 打印均方根误差
print('Root Mean Squared Error (RMSE): {}'.format(rmse))
```
最后,我们将使用协同过滤算法对数据进行推荐,并使用RegressionEvaluator评估模型:
```python
# 加载数据集
ratings = spark.read.format('csv').option('header', True).option('inferSchema', True).load('path/to/ratings.csv')
# 将数据集分为训练集和测试集
train_ratings, test_ratings = ratings.randomSplit([0.7, 0.3])
# 创建ALS模型
als = ALS(userCol='userId', itemCol='movieId', ratingCol='rating', nonnegative=True, regParam=0.1, rank=10)
# 训练模型
model = als.fit(train_ratings)
# 预测测试集
predictions = model.transform(test_ratings)
# 评估模型
evaluator = RegressionEvaluator(predictionCol='prediction', labelCol='rating', metricName='rmse')
rmse = evaluator.evaluate(predictions)
# 打印均方根误差
print('Root Mean Squared Error (RMSE): {}'.format(rmse))
```
以上是一个综合的MLlib编程实践,包括基本统计、分类和回归、聚类和协同过滤。您可以根据自己的需求选择相应的算法和数据集。
阅读全文