当前位置: 首页 > news >正文

苏州网站建设n苏州网站建设公司新闻内容摘抄

苏州网站建设n苏州网站建设公司,新闻内容摘抄,找网站建设的企业,wordpress exif1.项目简介 本数据分析项目目的是分析美国加州房价数据#xff0c;预测房价中值。 环境要求#xff1a; ancondajupyter notebookpython3.10.10 虚拟环境#xff1a; pandas 2.1.1 numpy 1.26.1 matplotlib 3.8.0 scikit-learn1.3.1 2. 导入并探索数据集 通用的数据分析… 1.项目简介 本数据分析项目目的是分析美国加州房价数据预测房价中值。 环境要求 ancondajupyter notebookpython3.10.10 虚拟环境 pandas 2.1.1 numpy 1.26.1 matplotlib 3.8.0 scikit-learn1.3.1 2.  导入并探索数据集 通用的数据分析前置导入和设置代码 # 设置支持python2和python3 from __future__ import division, print_function, unicode_literals# 项目所需的第三方库 import numpy as np import pandas as pd import os# 设置随机数种子 np.random.seed(42)# To plot pretty figures %matplotlib inline #内嵌图片显示 import matplotlib as mpl import matplotlib.pyplot as plt mpl.rc(axes, labelsize14) mpl.rc(xtick, labelsize12) mpl.rc(ytick, labelsize12)plt.rcParams[font.sans-serif] SimHei plt.rcParams[axes.unicode_minus] False# 定义生成图例的保存路径 PROJECT_ROOT_DIR . CHAPTER_ID fundamentalsdef save_fig(fig_id, tight_layoutTrue):# path os.path.join(PROJECT_ROOT_DIR, plt_images, CHAPTER_ID, fig_id .png)path os.path.join(PROJECT_ROOT_DIR, plt_images, fig_id .png)print(Saving figure, fig_id)if tight_layout:plt.tight_layout()plt.savefig(path, formatpng, dpi300)# 无视一些无关紧要的警告 import warnings warnings.filterwarnings(actionignore, message^internal gelsd)2.1加载数据 import pandas as pd housing pd.read_csv(./datasets/housing/housing.csv) housing.head()这里可以对数据做一些简单了解比如基本数据结构 info()方法可以快速查看数据的描述特别是总行数、每个属性的类型和非空值的数量 housing.info() # total_bedrooms 20433 20640总样本数 有缺失值有9个数值型数据一个字符型数据 longitude 经度 latitude 纬度 housing_median_age 住房中位年龄 total_rooms 总房间数 total_bedrooms 总卧室数 population 人口 households 家庭户数 median_income 中位收入 median_house_value 中位房屋价值 ocean_proximity 近海程度 2.2查看每个类别中数据个数 housing[ocean_proximity].value_counts() # 类别型数据1H OCEAN: 少于1小时的海洋距离 9136 INLAND: 内陆地区 6551 NEAR OCEAN: 靠近海洋 2658 NEAR BAY: 靠近海湾 2290 ISLAND: 岛屿 5 2.3查看数值数据的统计值 housing.describe() # 数值型数据info() 适用于查看 DataFrame 的基本信息包括数据类型和非空值的数量而 describe() 适用于获取关于数值型列的统计摘要信息只对数值型列有效而ocean_proximity属于字符型数据因此describe()没显示该属性的统计信息。 2.4查看每个特征的数据分布情况 在一张大图里展示housing数据集的九个特征的数据分布 import matplotlib.pyplot as plt housing.hist(bins50, figsize(20,15)) # 绘制数据集 housing 中数值型特征的直方图根据直方图的展示。需要注意以下几点 1.收入中位数单位不是美元是经过数据缩放的数据被限制在[0.5,15]横坐标。 2.房屋年龄和房屋价值的中位数也被限制了后者是你的标签目标因此可能会问题很大。因为你的模型的预测值可能也被限制在这个区间里了你需要搞清楚500000美元以上的房子是否需要被预测出准确值。如果要的话你可能要重新收集这部分数据。如果这部分不需要可以把这部分从训练集和测试集移除。 3.不同的属性有不同的量度。稍后会讨论特征缩放。 4.许多直方图的尾巴很长左短右长像最后一张图对于某些机器学习算法这会使检测规律变得更难些。我们会在后面尝试变换处理这些属性使其变为正态分布例如取log。 3.  创建测试集 在决定使用哪种机器学习算法之前确实需要先对数据进行深入分析。但是人类的大脑很容易受到一种现象的影响这种现象叫做“数据窥探偏差”。如果你提前看了测试集的数据可能会不自觉地选择一个能够在这个特定测试集上表现好的模型。这样做的问题在于当你用这个测试集来评估模型的性能时得到的结果可能会过于乐观而实际上当你将模型部署到真实世界中时它的表现可能并不如测试时那么好。简而言之就是不要在决定模型之前看测试集以免影响你的判断。 这也是先创建测试集的意义创建后这一部分的数据集就不再去看一直到验证模型的时候再使用。 3.1分层随机采样划分数据 sklearn提供了非常方便的数据集划分工具random_state可以设定前面讲过的随机生成器种子。你可以将种子传递给多个行数相同的数据集可以在相同的索引上分割数据集 from sklearn.model_selection import train_test_splittrain_set, test_set train_test_split(housing, test_size0.2, random_state42) # 默认随机抽样如果数据集很大随机抽样通常没有问题的但是如果比较小可能会有偏差。比如在美国51.3%为女性如果调查1000人选女性513名这称为分层抽样。根据一些制作这个数据集的团队得到的信息收入中位数是预测房价中位数非常重要的属性那么我们需要保证测试集可以代表整体数据集中的多种收入分类。也就是测试集要有普遍的意义。 housing[median_income].hist()3.2分层抽样一般步骤 1.先把数据分层 2.在每层中随机抽样 3.抽取出来的数据进行合并 为了根据收入进行分层抽样我们创建一个收入分层的特征 这里把median_income属性按照等宽法进行划分也就是按照(0,1.5],(1.5,3],(3,4.5],(4.5,6],(6,正无穷)5个区间把数据进行划分分成5类 housing[income_cat] pd.cut(housing[median_income],bins[0., 1.5, 3.0, 4.5, 6., np.inf], # 指定了划分的区间边界。labels[1, 2, 3, 4, 5]) # 指定了对应于每个区间的标签housing[income_cat]housing[income_cat].hist() # 每个类别下数据个数分布确定了数据层次设置数据分层后‘income_cat’的展示结果 housing[income_cat].value_counts()以上等价于把数据划分出来5个层次接下来我们使用sklearn提供的函数完成分层数据的抽样和数据合并过程 # 随机抽样 from sklearn.model_selection import train_test_splitstrat_train_set, strat_test_set train_test_split(housing,test_size0.2,shuffleTrue,stratifyhousing[income_cat],random_state42)查看进行分层抽样的测试集各收入层次比例与原数据集是否一致即验证通过分层抽样创建的测试集是否能具有代表意义 分层抽样将缩放后的收入情况按照(0,1.5],(1.5,3],(3,4.5],(4.5,6],(6,正无穷)5个区间把数据进行划分分成5类 随机抽样在保证各分层占比不变的情况下在每一个层级进行随机的抽样每一层的抽取结果组成分层抽样的总样本 strat_test_set[income_cat].value_counts() / len(strat_test_set)housing[income_cat].value_counts() / len(housing)可以看出‘income_cat’各层次占总数据集的比例是一致的 从上面分层抽样层次比例和原始数据集的层次比例对比可以看出分层抽样的比例几乎与原始数据集的分层比例一致 接下来对比分层数据集划分和随机数据集划分方法后的收入层次比例。两种数据集的划分方法区别于上文提到的分层抽样和随机抽样随机抽样是分层抽样的一个环节 def income_cat_proportions(data): # 定义收入分层比例函数return data[income_cat].value_counts() / len(data) # 用每一个收入层级除以总数据量train_set, test_set train_test_split(housing, test_size0.2, random_state42)compare_props pd.DataFrame({ # 定义一个pd.DataFrame格式的变量compare_props里面包含Overall、Stratified、Random属性Overall: income_cat_proportions(housing), # 计算整个数据集housing的收入分层比例Stratified: income_cat_proportions(strat_test_set), # 计算分层抽样后测试集的收入分层比例Random: income_cat_proportions(test_set), # 计算随机抽样后测试集的收入分层比例 }).sort_index() compare_props[Rand. %error] 100 * compare_props[Random] / compare_props[Overall] - 100 #计算随机抽样相对于整个数据集收入层次比例的误差 compare_props[Strat. %error] 100 * compare_props[Stratified] / compare_props[Overall] - 100 #计算分层抽样相对于整个数据集的误差compare_props由输出结果可以看出分层数据集划分的效果比随机数据集划分要好因为 1.  分层数据集划分后收入分层比例与原数据保持一致减少了不确定性因素 2.  分层抽样相对于整个数据集的误差明显更小了 3.3确定并处理数据 分层采样完毕去掉刚才创建的income_cat特征 for set_ in (strat_train_set, strat_test_set):#income_cat是要删除的列的名称。axis1表示删除列而不是行。set_.drop(income_cat, axis1, inplaceTrue) # inplaceTrue表示直接在原始数据集上进行修改。最终确定原来训练和测试的数据集 train_set strat_train_set.copy() test_set strat_test_set.copy()4.数据探索、可视化和发现规律 首先需要把测试集放在一边只研究训练集。如果训练集很大可能需要从中采样也就是在训练集里面再进行提取来分批次训练来保证我们可以快速的探索。在我们的例子中因为数据很少可以不用这么做。另外需要对数据拷贝避免损坏原来的数据。 4.1地理数据可视化 美国加州房价数据这份数据集有地理环境相关的两个特征维度经度longitude和纬度latitude 绘制散点图是探索地理信息的好方法需观察训练集数据特征因为实际情况下你不能提前得到测试集数据 train_set.plot(kindscatter, xlongitude, ylatitude) #图1 alpha 默认为 1.0。这意味着如果有多个数据点在同一个位置它们将会叠加在一起train_set.plot(kindscatter, xlongitude, ylatitude, alpha0.1) #图2,数据点是相对透明的这样可以更好地显示数据点的密度分布alpha0表示完全透明alpha1表示完全不透明 还可以进一步对可视化进行优化 1.设置点的大小表示人口数量 2.设置点的颜色表示房产价格 # plot 方法是 Pandas 库中基于 Matplotlib 的绘图方法 train_set.plot(kindscatter, xlongitude, ylatitude, alpha0.4,sstrat_train_set[population]/100, labelpopulation, # s设置点的大小除以100可以使点的大小更适度避免点太大。cmedian_house_value, cmapplt.get_cmap(jet), colorbarTrue, #c设置点的颜色指定使用的颜色映射。jet 从蓝色低价到红色高价 ) plt.legend()代码解析 1.train_set.plot(kindscatter, xlongitude, ylatitude, alpha0.4, 这行代码调用了train_set DataFrame的plot方法来创建一个散点图。参数kindscatter指定了图表类型为散点图。xlongitude和ylatitude指定了散点图的x轴和y轴分别对应train_set DataFrame中的longitude和latitude列。alpha0.4设置了点的透明度范围从0完全透明到1完全不透明这里设置为0.4意味着点会有一定的透明度以便在点重叠的地方可以看到下面的点。 2.sstrat_train_set[population]/100, labelpopulation, s参数用于设置散点图中点的大小。这里使用strat_train_set[population]列的值来确定点的大小并且除以100来调整大小使得点的大小更加适度避免点太大。labelpopulation为这个散点图的点大小设置了一个图例标签即“population”。 3.cmedian_house_value, cmapplt.get_cmap(jet), colorbarTrue, c参数用于设置散点图中点的颜色这里使用median_house_value列的值来确定点的颜色。cmapplt.get_cmap(jet)指定了颜色映射这里使用了Matplotlib的jet颜色映射它是一个从蓝色代表低值到红色代表高值的渐变色。colorbarTrue添加了一个颜色条用于显示颜色对应的数值范围。 4.plt.legend() 这行代码是Matplotlib库的函数用于在图表中添加图例。由于我们在plot方法中设置了label参数这里调用plt.legend()会根据这些标签在图表中显示图例。 文件路径要根据自己的计算机文件系统中存放图片的路径来 import matplotlib.image as mpimg california_imgmpimg.imread(PROJECT_ROOT_DIR /images/end_to_end_project/california.png) # 加载california地图需检测图片路径是否正确 ax train_set.plot(kindscatter, xlongitude, ylatitude, figsize(10,7),sstrat_train_set[population]/100, labelPopulation, # s设置点的大小除以100可以使点的大小更适度避免点太大。cmedian_house_value, cmapplt.get_cmap(jet), #c设置点的颜色指定使用的颜色映射。jet 从蓝色低价值到红色高价值。colorbarFalse, alpha0.4, # colorbarFalse 禁用颜色条因为颜色已经在图中的每个点上显示了。) plt.imshow(california_img, extent[-124.55, -113.80, 32.45, 42.05], alpha0.5,cmapplt.get_cmap(jet)) plt.ylabel(Latitude, fontsize14) plt.xlabel(Longitude, fontsize14)prices train_set[median_house_value] tick_values np.linspace(prices.min(), prices.max(), 11) cbar plt.colorbar() cbar.ax.set_yticklabels([$%dk%(round(v/1000)) for v in tick_values], fontsize14) cbar.set_label(Median House Value, fontsize16)plt.legend(fontsize16)代码解析更多的是了解matplotlib库在数据分析可视化这一块的使用 1.import matplotlib.image as mpimg 这行代码导入了Matplotlib库中的image模块用于读取和显示图像。 2.california_imgmpimg.imread(PROJECT_ROOT_DIR /images/end_to_end_project/california.png) 使用mpimg.imread函数读取存储在指定路径下的加利福尼亚州地图图片。PROJECT_ROOT_DIR是一个变量它应该包含项目的根目录路径。这里需要确保路径是正确的以便能够成功加载图片。 3.ax train_set.plot(kindscatter, xlongitude, ylatitude, figsize(10,7), 这行代码使用train_set DataFrame的plot方法创建一个散点图并将其赋值给变量ax。kindscatter指定图表类型为散点图。xlongitude和ylatitude指定散点图的x轴和y轴分别对应train_set DataFrame中的longitude和latitude列。figsize(10,7)设置了图表的大小。 4.sstrat_train_set[population]/100, labelPopulation, s参数用于设置散点图中点的大小这里使用strat_train_set[population]列的值来确定点的大小并除以100来调整大小。labelPopulation为这个散点图的点大小设置了一个图例标签即“Population”。 5.cmedian_house_value, cmapplt.get_cmap(jet), c参数用于设置散点图中点的颜色这里使用median_house_value列的值来确定点的颜色。cmapplt.get_cmap(jet)指定了颜色映射这里使用了Matplotlib的jet颜色映射它是一个从蓝色代表低值到红色代表高值的渐变色。 6.colorbarFalse, alpha0.4, colorbarFalse禁用颜色条因为颜色已经在图中的每个点上显示了。alpha0.4设置了点的透明度。 7.plt.imshow(california_img, extent[-124.55, -113.80, 32.45, 42.05], alpha0.5, cmapplt.get_cmap(jet)) 这行代码使用plt.imshow函数将加利福尼亚州的地图作为背景图像显示在散点图下面。extent参数定义了图像的边界即地图的经纬度范围。alpha0.5设置了地图的透明度cmap参数设置了颜色映射。 8.plt.ylabel(Latitude, fontsize14) 和 plt.xlabel(Longitude, fontsize14) 这两行代码分别设置了y轴和x轴的标签并指定了字体大小。 9.prices train_set[median_house_value] 这行代码从train_set DataFrame中提取median_house_value列的值并赋值给变量prices。 10.tick_values np.linspace(prices.min(), prices.max(), 11) 使用np.linspace函数生成一个从prices列的最小值到最大值的等间隔数值数组用于颜色条的刻度。 11.cbar plt.colorbar() 这行代码创建了一个颜色条并将其赋值给变量cbar。 12.cbar.ax.set_yticklabels([$%dk%(round(v/1000)) for v in tick_values], fontsize14) 这行代码设置了颜色条的刻度标签将每个刻度值转换为以千为单位的美元值并指定了字体大小。 13.cbar.set_label(Median House Value, fontsize16) 这行代码设置了颜色条的标题并指定了字体大小。 14.plt.legend(fontsize16) 这行代码添加了图表的图例并指定了字体大小。 从图中可以得出海景对于房价有着明显的支撑作用并且南方的房子价值要比北方高。所以从上图可看出 Latitude和ocean_proximity可能对房价有影响。因为颜色更深。 4.2寻找数据特征的相关性 数据集不是很大可以用标准相关系数standard correlation coefficient皮尔逊相关系数来计算 皮尔逊相关系数 皮尔逊相关系数的取值范围是[-1, 1] 当相关系数为1时表示两个变量完全正相关即一个变量的增加伴随着另一个变量的增加。 当相关系数为-1时表示两个变量完全负相关即一个变量的增加伴随着另一个变量的减少。 当相关系数为0时表示两个变量之间没有线性相关关系。 corr_matrix train_set.corr() # corr 方法计算了整个数据集中每对列之间的相关系数。 corr_matrix分析的目标数据是‘median_house_value‘ corr_matrix[median_house_value].sort_values(ascendingFalse) # 将相关系数按照降序排列从而得到与目标变量具有最高相关性的特征。相关系数的范围是 -1 到 1。当接近 1 时意味强正相关例如当收入中位数增加时房价中位数也会增加。当相关系数接近 -1 时意味强负相关例如纬度和房价中位数有轻微的负相关性。housing_median_age 0.114110房龄与国内情况好像不太一样加州房龄越老价格越贵中国大部分新房比老房价格贵。 另一种检测属性间相关系数的方法是使用 pandas.plotting.scatter_matrix(数据集列名画布大小) attributes [median_house_value, median_income, total_rooms,housing_median_age] pd.plotting.scatter_matrix(train_set[attributes], figsize(12, 8))读图 1.median_house_value房屋中位价与 median_income收入中位数 这两个变量之间存在较为明显的正相关关系。随着收入中位数的增加房屋中位价也倾向于增加。 2.median_house_value房屋中位价与 total_rooms总房间数 这两个变量之间也显示出一点正相关性。房屋中位价随着总房间数的增加而增加这可能意味着更大的房屋通常价格更高。 3.median_income收入中位数与 total_rooms总房间数 这两个变量之间的关系不太明显但似乎存在轻微的正相关性。收入较高的地区可能拥有更多的房间。 4.housing_median_age房屋中位年龄与其他变量 房屋中位年龄与其他变量median_house_value, median_income, total_rooms之间的关系不明显散点图没有显示出强烈的线性关系。 5.median_house_value房屋中位价与 housing_median_age房屋中位年龄 这两个变量之间的关系较为复杂可能存在轻微的负相关性表明较新的房屋可能价格更高但这种关系不如与其他变量的关系强烈。 6.total_rooms总房间数与 housing_median_age房屋中位年龄 这两个变量之间没有明显的线性关系散点图显示房间数与房屋年龄之间的分布较为随机。 7.变量的分布 median_house_value 和 total_rooms 显示出右偏分布意味着大多数值集中在较低的范围内但有一些高值的异常点。 median_income 和 housing_median_age 的分布较为均匀但 median_income 也显示出轻微的右偏。 对角线上的图如果也画散点图的话其实都是一条直线没有任何意义这里对角线上的图画的是直方图。 因为对角线上是自己和自己的比较是明显的线性关系并且斜线斜率为1 从上面几个图我们可以看到最有潜力预测房价的属性是收入因为目标特征是median_house_value # 验证猜想 train_set.plot(kindscatter, xmedian_income, ymedian_house_value, alpha0.3) # 定义x、y轴的坐标尺度 plt.axis([0, 16, 0, 550000])这张图说明了几点。首先相关性非常高可以清晰地看到向上的趋势并且数据点不是非常分散。第二我们之前看到的最高价清晰地呈现为一条位于 500000 美元的水平线。 4.3特征提取 在把数据给机器学习算法之前还有一件事可以做就是尝试多种属性组合。 例如总的房间数可能并不重要我们真正关心的是每户的房间数。 构建三个新的特征每户的房间数每户的人口数卧室在总房间数中的比例 train_set[rooms_per_household] train_set[total_rooms]/train_set[households] train_set[population_per_household]train_set[population]/train_set[households] train_set[bedrooms_per_room] train_set[total_bedrooms]/train_set[total_rooms]再次观察其它数据与目标数据间的关联度 corr_matrix train_set.corr() corr_matrix[median_house_value].sort_values(ascendingFalse)与总房间数或总卧室数相比卧室占比与房价中位数的关联更强。显然卧室数/总房间数的比例越低房价就越高(负相关)。除此之外每户的房间数相比于总房间数和户数也更合适预测房价。 这里我们根据相似度排名去掉几个与房价关系不大的特征。 train_set.drop([households,population_per_household,population,longitude],axis1)
http://www.w-s-a.com/news/56831/

相关文章:

  • 高校图书馆网站的建设方案湖南常德市
  • 房地产怎么做网站推广wordpress插件汉化下载
  • 一般pr做视频过程那个网站有无锡网络公司平台
  • 安徽网站推广系统网站根目录权限设置
  • 班级网站建设需求智慧校园登录入口
  • asp.net网站发布到虚拟主机电商设计网站哪个好
  • 做的网站怎么转成网址链接企业为什么要找会计
  • 关于建设网站的情况说明书文化建设方面的建议
  • 订票网站开发公司大通证券手机版下载官方网站下载
  • 网店美工的意义与发展佛山推广seo排名
  • 网站在建设中模板自助云商城
  • 珠海网站设计建建建设网站公司网站
  • 广州高端网站制作公司哪家好网页制作公司 软件
  • 最快做网站的语言百度站长反馈
  • 简单网站设计价格手机网站技巧
  • 什么颜色做网站显的大气网站建设的含盖哪方面
  • 没网站怎么做二维码扫描连接济南做网站推广哪家好
  • 台州建设规划局网站搞外贸一般是干什么的
  • 怎么提高自己网站的知名度电子商务是建网站
  • 官方查企业的网站办公用品网站建设策划书
  • 微信网站搭建哪家好网站中转页
  • 阿里巴巴网站开发是谁长沙自助模板建站
  • 阿里云网站方案建设书网络公司运营是干啥的
  • 南通seo网站排名优化nginx wordpress rewrite
  • 网站做成软件做内部网站费用
  • 浙江企业网站建设网站域名有了 网站如何建设
  • 学编程哪个机构有权威德州做网站优化
  • 最火的网站开发语言福州网站建设服务商
  • 嘉兴网站制作哪里好asp网站源码免费版
  • 如何给网站配置域名百度网站统计添加网址