Ados

a fullstack game worker

0%

每天进步一点点029 - Python数据科学教程的学习

Preface

最近在网站上看到了微软在 github 开源的机器学习,数据科学,物联网的相关教程,比较感兴趣,学到就是赚到,
于是跟着教程学了一下,总比闲的发慌自我压迫的好。
之前是直接在网页上用 Jupyter Notebook ,现在上改用 conda 然后是 VS Code 上使用 Jupyter 插件。

Contents

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 最基础的Series
airports = pd.Series([
"Seattle-Tacoma",
"Dulles",
"London Heathrow",
"Schiphol"
])

# shape查看数据集尺寸的
airports.shape

# Output:(3,2)
1
2
3
4
5
6
7
# 基础的DataFrame的使用
airports = pd.DataFrame([
["Seattle-Tacoma","Seattle","USA"],
["Dulles","Washington","USA"],
["London Heathroe","London","British"],
["Schiphol","Amstrerdam","Netherlands"],
],columns=["Name","City","Country"])

DataFrame

1
2
# 查看数据集的信息,可以看数据集有多少数据,有多少不完整的数据等
airports.info()

DataFrame.inf

lociloc用于访问指定的列:loc是基于标签查找,iloc是基于索引查找

1
2
3
4
5
6
7
8
9
# 访问某个特定的列
# airports["Country"]
# airports[["Country","City"]]
# 二维数组访问法
# airports.iloc[0,1]
# 访问全部数据,二维坐标访问
# airports.iloc[:,:]
# airports.iloc[:,[0,2]]
airports.loc[:,["Name","Country"]]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 从cvs导入数据,当然,也可以将数据存放到csv
airports_df = pd.read_csv("data/airport.csv",on_bad_lines="warn",header=0)
# 将数据存入csv3
airports_df.to_csv()
delay_df = pd.read_csv("data/arrive_time.csv")
# drop返回新的DataFrame
# new_df = delay_df.drop(columns=["Actual_arr_time"])

# inplace改变原dataframe
delay_df.drop(columns=["Actual_arr_time"],inplace=True)

# 去掉空项目
nonnull_df = delay_df.dropna()
# 是否修改当前DataFrame
# delay_df.dropna(inplace=True)
# 查询重复的项目
delay_df.duplicated()
# 去除重复项目
delay_df.drop_duplicates(inplace=True)

Problems

VS Code插件无法更新的问题

Jupyter插件对于VS Code是有版本要求的,我的 VS Code刚好就更新不了,于是去网上搜索了一下,发现这个是Mac版本的问题,导致Download中的 App 无法更新,我重新下载了最新版本的 VS Code,然后通过 mv 指令将它移动到 Applications 下面,就ok了。

Jupyter中conda配置

通过 Command+Shift+P 召唤命令菜单,新建 Jupyter Notebook ,发现导入不了包,后来通过 conda 新建了一个环境,在命令行中active,install都没有用,最后发现右上角有个选择环境的入口:
conda env chose

scikit-learn的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 读取数据
delay_df = pd.read_csv("some_csv")
# 去除空值
delay_df.dropna(implace=True)
# 取可能对结果有影响的因素
X = delay_df.loc[:,["DISTANCE","CRS_ELAPSED_TIME"]]
# 取实际需要预测的值
y = delay_df.loc[:,["ARR_DELAY"]]
# 将整体数据分为训练数据和测试数据两个部分
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=42)
# 使用线性回归进行模型训练
regressor = LinearRegression()
regressor.fit(X_train,y_train)
# 使用此模型来进行预测
y_predict = regressor.predict(X_test)
# 返回值其实不是DataFrame 而是numpy数组
type(y_predict)
# numpy.ndarray
# MSE: Mean Squared Error 用来衡量模型的准确度,值越低越好
# 将 y_predict 封装为DataFrame
y_predict_df = pd.DataFrame(y_predict)

# mse = mean((y_test-y_predict)**2)
from sklearn import metrics
mse = metrics.mean_squared_error(y_test,y_predict)
# RMSE:Root Mean Squared Error即 MSE的根
import numpy
rmse = num.sqrt(mse)
# MAE: mae 没有 rmse敏感 MAE=meam(abs(actuals - predicts))
mae = metrics.mean_absolute_error(y_test, y_predict)
# R Squared: 这个值越高,模型越好
r2 = metrics.r2_score(y_test, y_predict)
# 不同的模型用不同的方法衡量精确度, scikit-learn 和 numpy 提供了大量的方法来衡量精确度

References

  1. Bilibili - 微软Python数据科学官方教程
  2. Github - Microsoft/Data Science For Beginners
  3. scikit-learn.cn