import logging
import sys
import pandas as pd
from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.regression import GBTRegressor
from pyspark.ml.tuning import CrossValidator, ParamGridBuilder
from pyspark.sql import SparkSession
logging.basicConfig(level=logging.INFO, stream=sys.stdout)
spark = SparkSession.builder.appName("big-mart-sales").getOrCreate()
spark.sparkContext.setLogLevel('ERROR')
train_df = spark.read.csv('train_model.csv', header=True, inferSchema=True)
test_df = spark.read.csv('test_model.csv', header=True, inferSchema=True)
# Get feature columns'name
feature_cols = train_df.columns
feature_cols.remove('Item_Outlet_Sales')
# Combine all feature columns to one
vectorAssembler = VectorAssembler(inputCols=feature_cols, outputCol='features')
train_df = vectorAssembler.transform(train_df)
train_df = train_df.select(['features', 'Item_Outlet_Sales'])
test_df = vectorAssembler.transform(test_df)
test_df = test_df.select(['features', 'Item_Outlet_Sales'])
# Gradient-boosted Tree Regression
model = GBTRegressor(featuresCol='features', labelCol='Item_Outlet_Sales', maxIter=10)
evaluator = RegressionEvaluator(predictionCol="prediction", labelCol="Item_Outlet_Sales", metricName="rmse")
paramGrid = ParamGridBuilder() \
.addGrid(model.maxDepth, [5, 10, 15]) \
.addGrid(model.minInstancesPerNode, [100, 150, 200]) \
.build()
cv = CrossValidator(estimator=model, estimatorParamMaps=paramGrid, evaluator=evaluator, numFolds=5)
cv_model = cv.fit(train_df)
predictions = cv_model.transform(test_df)
predictions.select("prediction", "Item_Outlet_Sales", "features").show(5)
print("Root Mean Square Error (RMSE) on test data = %g" % evaluator.evaluate(predictions))
evaluator_r2 = RegressionEvaluator(predictionCol="prediction", labelCol="Item_Outlet_Sales", metricName="r2")
print("R Squared (R2) on test data = %g" % evaluator_r2.evaluate(predictions))
# Don't support in TI-One
# coef6 = pd.Series(cv_model.featureImportances, feature_cols).sort_values(ascending=False)
# coef6.plot(kind='bar', title='Gradient-boosted Tree Feature Importances')
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论














收起资源包目录








































共 33 条
- 1
资源评论

- 滕扬Lance2023-07-26这个文件的价值不仅仅在于代码和数据的分享,更重要的是作者提供了实战经验和思路,给读者带来了启发。
- Crazyanti2023-07-26作者提供了实际的案例,让读者能够将学到的知识应用到真实的业务问题中。
- PS设计师米朵2023-07-26这个文件的语言简单明了,不需要特别专业的知识也能够理解,对初学者来说很友好。
- 嘻嘻哒的小兔子2023-07-26通过这个文件,可以学习到7种回归预测的方法,帮助我们更好地理解机器学习在销售预测中的应用。
- 湯姆漢克2023-07-26这个文件提供了完整的代码和数据,让人可以快速了解如何使用pyspark进行零售商品销售预测。

刘同敏
- 粉丝: 4
- 资源: 30
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


安全验证
文档复制为VIP权益,开通VIP直接复制
