当前位置:   article > 正文

数学建模2022首届钉钉杯 (练习题a题简单实现)———— 练习(1)_2022届钉钉杯大学生大数据 初赛a

2022届钉钉杯大学生大数据 初赛a

这几天实在是,有点困,,自己写的代码,可能有误!!

不过话说能运行就是王道。希望大佬们帮忙纠正纠正。作为菜鸡的我先行谢过!

一、a题背景介绍

 二、a题代码实现

  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
  5. plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
  6. # 导入数据
  7. df = pd.read_csv(r'D:\钉钉杯\2022年首届钉钉杯大学生大数据挑战赛练习题目\练习题A\数据集\data.csv')
  8. df = df.drop(columns = 'Unnamed: 0')
  9. # 画图分析
  10. df['总价'] = df['总价'].map(lambda x: float((str(x).replace('万',''))))
  11. mean_df = df.groupby('区域')['总价'].agg([np.mean])
  12. x = list(mean_df.index)
  13. y = list(mean_df['mean'])
  14. plt.title('区域二手房均价')
  15. plt.bar(x,y)
  16. plt.show()
  17. count_df = df['区域'].value_counts()
  18. count_df = pd.DataFrame(count_df)
  19. count_df.columns = ['count']
  20. count_df['count'].plot(kind ='pie',title = '区域二手房数据占比',autopct = '%1.2f%%')
  21. plt.show()
  22. zx_count_df = pd.DataFrame(df['装修'].value_counts())
  23. zx_count_df.plot(kind = 'bar',title = '二手房装修程度分析',ylabel = '数量')
  24. plt.show()
  25. hx_df = df.groupby('户型')['总价'].agg([np.mean])
  26. hx_df2 =df['户型'].value_counts().head(5)
  27. hx = list(hx_df2.index)
  28. hx_mean=[]
  29. for i in hx:
  30. hx_mean.append(hx_df['mean'][i])
  31. np.array(hx_mean)
  32. hx_df = pd.DataFrame()
  33. hx_df.index=hx
  34. hx_df['均值'] = hx_mean
  35. hx_df.plot(kind = 'bar',title='热门户型均价')
  36. plt.show()
  37. #建立房间定价模型,这里采用的较为简单的GBDT模型
  38. # 模型有缺失值,需要对缺失值进行去除
  39. df = df.dropna(axis=0,how='any')
  40. # 采用GBDT模型进行回归预测分析 可以改进
  41. from sklearn.model_selection import train_test_split
  42. from sklearn.preprocessing import LabelEncoder
  43. from sklearn.ensemble import GradientBoostingRegressor
  44. le =LabelEncoder()
  45. # 对字符串数值化
  46. df['户型']=le.fit_transform(df['户型'])
  47. df['朝向']=le.fit_transform(df['朝向'])
  48. df['楼层']=le.fit_transform(df['楼层'])
  49. df['装修']=le.fit_transform(df['装修'])
  50. df['区域']=le.fit_transform(df['区域'])
  51. X = df.drop(columns=['小区名字','总价','建筑面积','单价'])
  52. y = df['总价']
  53. # 划分测试集和训练集
  54. X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=666)
  55. # 拟合数据
  56. model = GradientBoostingRegressor(random_state=666)
  57. model.fit(X_train,y_train)
  58. y_pred = model.predict(X_test)
  59. a = pd.DataFrame()
  60. a['预测值'] = list(y_pred)
  61. a['实际值'] = list(y_test)
  62. print(a)
  63. score = model.score(X_test,y_test)
  64. print('模型得分为:%s'%score)

 out:

模型得分为:0.6562596295598755

 在写完代码后发现一直报错,结果后面才发现是缺失值得原因,不过有点奇怪的是,用isnull检测也没有发现缺失值,但他就是有,可把我给气坏了,后来发现问题后,真的是想扎电脑。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/355805
推荐阅读