爬取出来的数据直接放在csv文件里面可以直接读取
还是以爬取房屋数据为例
# !pip install seaborn pandas matplotlib numpy
import numpy as np
import pandas as pd #数据比较少的时候可以用pandas,数据比较大的时候可以通过采样让其编的比较小
import matplotlib.pyplot as plt
import seaborn as sns
from IPython import display
display.set_matplotlib_formats('svg')
# Alternative to set svg for newer versions
# import matplotlib_inline
# matplotlib_inline.backend_inline.set_matplotlib_formats('svg')
data = pd.read_csv('house_sales.zip') #压缩成zip文件,文本默认可以存储成一个压缩文件
data.shape
data.head()
null_sum = data.isnull().sum() data.columns[null_sum < len(data) * 0.3] # columns will keep
data.drop(columns=data.columns[null_sum > len(data) * 0.3], inplace=True)
data.dtypes
currency = ['Sold Price', 'Listed Price', 'Tax assessed value', 'Annual tax amount']
for c in currency:
data[c] = data[c].replace(
r'[$,-]', '', regex=True).replace(
r'^s*$', np.nan, regex=True).astype(float)
areas = ['Total interior livable area', 'Lot size']
for c in areas:
acres = data[c].str.contains('Acres') == True
col = data[c].replace(r'b sqftb|b Acresb|b,b','', regex=True).astype(float)
col[acres] *= 43560
data[c] = col
data.describe()
abnormal = (data[areas[1]] < 10) | (data[areas[1]] > 1e4) data = data[~abnormal] sum(abnormal)
ax = sns.histplot(np.log10(data['Sold Price'])) ax.set_xlim([3, 8]) ax.set_xticks(range(3, 9)) ax.set_xticklabels(['%.0e'%a for a in 10**ax.get_xticks()]);
data['Type'].value_counts()[0:20]
types = data['Type'].isin(['SingleFamily', 'Condo', 'MultiFamily', 'Townhouse'])
sns.displot(pd.Dataframe({'Sold Price':np.log10(data[types]['Sold Price']),
'Type':data[types]['Type']}),
x='Sold Price', hue='Type', kind='kde');
data['Price per living sqft'] = data['Sold Price'] / data['Total interior livable area'] ax = sns.boxplot(x='Type', y='Price per living sqft', data=data[types], fliersize=0) ax.set_ylim([0, 2000]);
d = data[data['Zip'].isin(data['Zip'].value_counts()[:20].keys())] ax = sns.boxplot(x='Zip', y='Price per living sqft', data=d, fliersize=0) ax.set_ylim([0, 2000]) ax.set_xticklabels(ax.get_xticklabels(), rotation=90);
_, ax = plt.subplots(figsize=(6,6)) columns = ['Sold Price', 'Listed Price', 'Annual tax amount', 'Price per living sqft', 'Elementary School Score', 'High School Score'] sns.heatmap(data[columns].corr(),annot=True,cmap='RdYlGn', ax=ax);2.2数据清理
如何提升数据质量?数据清理
数据有噪声:数据清理
数据干净但是不是想想要的格式:数据变换
数据对模型不友好:数据提取
数据有噪声可能会导致模型会变得越来越差
常见的数据错误:
1.数据不在正常分布里面
2.数据和一些规则有冲突
3.数据类型或语义错误
数据变换
对收集标注后的的原始数据进行数据变换——>数据特征——>模型训练
常用的数据变换手段:
1.把数据的最大值和最小值限定在一个区间
2.标准化
3.归一化(用的少)
4.log变换(数据较大的时候考虑log变换)
图片的爬取和存储成本比较高,对于图片怎么处理?
对图片进行下采样,所以常用的训练图片数据库都是224*224大小,数据质量和数据大小要做一个权衡。
对于视频怎么处理?
对视频进行采样,并不对每一帧都采样。
文本数据的处理:子词
总结:数据转换,你把数据转换成机器学习所需要的格式,平衡数据的质量和大小的关系,具体用什么格式来存储,视频采样,图片可以下采样,文本可以语法话,子词话。
把数据转成模型喜欢的样子



