首页>>人工智能->端到端机器学习项目

端到端机器学习项目

时间:2023-11-29 本站 点击:1

上一篇讲了基本的端到端项目开发的起步,本篇将要更加详细的讲解开发机器学习项目的其他重点。

1.获取数据(续)

上篇了解了pandas的两种数据结构Series和DataFrame,以及使用urllib下载数据文件和初步查看数据,现在讲解如何更加详细的查看和分析数据。

1.1 快速查看数据结构

注:上篇通过fetch_housing_data()和load_housing_data()两个函数读取从远程服务器上下载的housing.csv,并将其缓存到Dataframe类型的housing中。

虽然相比其他的机器学习项目,本次的housing数据并不是很多。但是我们如果要是直接查看输出也是很困难的。但是我们可以使用DataFrame的head()和tail()查看前几行数据或者后几行数据。

housing = load_housing_data()housing.head(5)housing.tail(5)# 输出       longitude  latitude  ...  median_house_value  ocean_proximity0        -122.23     37.88  ...            452600.0         NEAR BAY1        -122.22     37.86  ...            358500.0         NEAR BAY2        -122.24     37.85  ...            352100.0         NEAR BAY3        -122.25     37.85  ...            341300.0         NEAR BAY4        -122.25     37.85  ...            342200.0         NEAR BAY[5 rows x 10 columns]       longitude  latitude  ...  median_house_value  ocean_proximity20635    -121.09     39.48  ...             78100.0           INLAND20636    -121.21     39.49  ...             77100.0           INLAND20637    -121.22     39.43  ...             92300.0           INLAND20638    -121.32     39.43  ...             84700.0           INLAND20639    -121.24     39.37  ...             89400.0           INLAND[5 rows x 10 columns]# FrameOrSeries.head(n) 的作用就是返回当前调用的Frame或Series的前n行# FrameOrSeries.tail(n) 的作用则是返回当前调用的Frame或Series的后n行

注意:如果读者的开发环境是jupyter notebook,则只需要housing.head(5)/housing.tail(5),点击运行便可以直接获得输出。如国使用的PyCharm,则需要使用print(housing.head(5))函数进行输出。

同时我们还知道了其所有的columns也就是housing有哪些数据,但是如果我们想要更加查看housing的更多信息,就可以用info()来获取数据集的简单描述。

housing.info()# 输出信息:# 1. class类型<class 'pandas.core.frame.DataFrame'># 2. 获得总行数RangeIndex: 20640 entries, 0 to 20639# 3. 获取每个属性的类型和是否非空Data columns (total 10 columns): #   Column              Non-Null Count  Dtype  ---  ------              --------------  -----   0   longitude           20640 non-null  float64 #经度 1   latitude            20640 non-null  float64 #维度 2   housing_median_age  20640 non-null  float64 #房龄中位数 3   total_rooms         20640 non-null  float64 #总房间 4   total_bedrooms      20433 non-null  float64 #总卧室 5   population          20640 non-null  float64 #区域人口 6   households          20640 non-null  float64 #区域家庭 7   median_income       20640 non-null  float64 #收入中位数 8   median_house_value  20640 non-null  float64 #房价中位数 9   ocean_proximity     20640 non-null  object  #与海的空间关系dtypes: float64(9), object(1)# 4.获取总内存memory usage: 1.6+ MBNone

这里我们需要注意一点,total_bedrooms的非空值比其他属性要少207个区域,因此在此后的处理需要考虑到该问题。

我们使用info()知道了housing下有10个属性,但是其中一个是object,如果再python下,则可能是任何对象,但是我们是从csv下加载的,所以只可能是文本属性。那我们就可以使用value_counts() 方法,可以了解该属下将区域分成了几部分。

housing["ocean_proximity"].value_counts()# 输出<1H OCEAN     9136 # 到海洋小于1小时INLAND        6551 # 陆地NEAR OCEAN    2658 # 海洋附近NEAR BAY      2290 # 海湾附近ISLAND           5 # 岛屿Name: ocean_proximity, dtype: int64

如果我们还想要继续做一些简单的统计,比如获得总行(count)、平均值(mean)、标准差(std:用于测量数值的离散程度)等等,我们还可以通过describe() 方法。

housing.describe()# 输出8种统计          longitude      latitude  ...  median_income  median_house_valuecount  20640.000000  20640.000000  ...   20640.000000        20640.000000 # 统计总数、不统计空值mean    -119.569704     35.631861  ...       3.870671       206855.816909 # 平均值std        2.003532      2.135952  ...       1.899822       115395.615874 # 标准差min     -124.350000     32.540000  ...       0.499900        14999.000000 # 最小值25%     -121.800000     33.930000  ...       2.563400       119600.000000 # 第25分位/第一四分位50%     -118.490000     34.260000  ...       3.534800       179700.000000 # 第50分位75%     -118.010000     37.710000  ...       4.743250       264725.000000 # 第75分位/第三四分位max     -114.310000     41.950000  ...      15.000100       500001.000000 # 最大值[8 rows x 9 columns]

我们还能够借助matplotlib画housing直方图,所用的函数就是hist(),hist()可以画出housing每个float64类型属性的直方图(x轴是属性值的范围,y轴是实例的数量)。

housing.hist(bins=50, figsize=(20, 15))plt.show()

每个数值属性的直方图


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/AI/1187.html