写在前面

Kaggle只是迫不得已,真要学害得是我CTF!

EDA(Exploratory Data Analysis)

加载数据

在实际环境中,training data一般都有许多列,并不是所有的特征都会对最终的target有影响(影响因子较小甚至可以忽略),有的特征还存在负影响或者None值,此时需要对所有特征进行过滤或者修改。

Pandas

1
import pandas as pd

read_csv

读取csv文件

1
2
path = bulabula
data = pd.read_csv(path)

columns

1
data.columns

输出如下,将每列的name打印出来(例子

1
2
3
4
5
Index(['Suburb', 'Address', 'Rooms', 'Type', 'Price', 'Method', 'SellerG',
'Date', 'Distance', 'Postcode', 'Bedroom2', 'Bathroom', 'Car',
'Landsize', 'BuildingArea', 'YearBuilt', 'CouncilArea', 'Lattitude',
'Longtitude', 'Regionname', 'Propertycount'],
dtype='object')

针对缺失值的行

dropna
1
2
3
4
5
6
7
8
data.dropna(axis=0)
'''
将data中某列为Na的行删掉
例如:
|a|Na| |b|123|
---->
|b|123|
'''

展示列属性

1
2
for col in data.columns:
print(col, data[col].dtype)
image-20240304155612527

展示某列

1
2
3
4
data.Suburb
data['Suburb']
## 多列
data[['Suburb', 'Address', 'Rooms']]

describe

1
data.describe()
描述

Missing Value

检查是否为Nan

1
data['列名'].isnull().any     True有Nan值,False

取平均

1
2
在该列为连续型随机变量时,可以考虑直接拿中间值
计算该列所有值,取平均数填入缺失值

取最大频次

1
在针对离散型随机变量时,取出现频率最多的值

特殊值法

1
2
直接填入不可能的值
例:年龄=0, -1

SimpleImputer

处理无效值api

1
2
3
from sklearn.impute import SimpleImputer
my_imputer = SimpleImputer()
my_imputer.fit_transform(x_train)

Model

决策树 DecisionTreeRegressor