機械学習三剣客
20984 ワード
機械学習三剣客
最近,推奨システムを最適化する準備ができており,sparkのmllibのコードを学習する際にnumpyを用いるパラメータが多いことが分かった.そこでこのブログがあり、pythonの機械学習を詳しく説明した三剣客は、私の後ろにもデータをグラフの形で展示したいと思っていました.これでイメージがよくなりました.
numpy
Numpyはpython言語の拡張ライブラリです.高度な大量の次元配列とマトリクス演算をサポートし、また配列演算に対して大量の数学関数ライブラリを提供します.Numpy内部はpythonのGILを解除し、演算効率が極めて良く、大量の機械学習フレームワークの基礎ライブラリである
Numpy単純配列作成
numpy配列プロパティの表示配列要素の数を表示する 配列形状 を表示する.配列次元 を表示配列要素タイプ を表示
N次元配列のapi関数の迅速な作成 10行10列の数値浮動小数点1の行列 を作成する. 10行10列の数値浮動小数点0の行列 を作成する.
numpyはランダム配列npを作成する.random均一分布 np.random.rand(10,10)指定形状 を作成する np.random.uniform(0100)指定範囲内の数 を作成 np.random.randin(0100)指定方位内の整数 を作成する
正規分布 所与の平均/標準差/次元の正規分布 配列のインデックス、スライス 配列形状を変更する(前後要素の個数マッチングが要求される)
numpy計算(重要)
統計演算指定軸最大値amax(パラメータ1:配列;パラメータ2:axis=0/1;0は列1が行を表す) 指定軸最小値amin 指定軸平均mean 分散std
はいれつえんざん
配列と数の演算
マトリックス演算np.dot()
計算ルール
(M行、N列)*(N行、Z列)=(M行、Z列)
マトリックスせつごう
マトリックス垂直接合
numpyは、データnpを読み出す.getfromtxt
pandas
pandasはnumpyに基づいて開発され、データ分析に特化したオープンソースpythonライブラリです.
Pandasの2大コアデータ構造
Series(1 Dデータ)
DataFrame(マルチフィーチャーデータ、ローインデックス、カラムインデックス)
pandaデータ読み出し(csvを例に)
データテーブルのマージ
データテーブルのグループ化
matplotlib
matplotlibはpython 2 Dグラフィックス分野の基礎キットであり、ユーザーがデータをグラフィックス化し、多様な出力フォーマットを提供する.ここではmatplotlibの一般的な使い方を4つのケースで探求します
折れ線グラフを描く
最近,推奨システムを最適化する準備ができており,sparkのmllibのコードを学習する際にnumpyを用いるパラメータが多いことが分かった.そこでこのブログがあり、pythonの機械学習を詳しく説明した三剣客は、私の後ろにもデータをグラフの形で展示したいと思っていました.これでイメージがよくなりました.
numpy
Numpyはpython言語の拡張ライブラリです.高度な大量の次元配列とマトリクス演算をサポートし、また配列演算に対して大量の数学関数ライブラリを提供します.Numpy内部はpythonのGILを解除し、演算効率が極めて良く、大量の機械学習フレームワークの基礎ライブラリである
Numpy単純配列作成
import numpy as np
a=[1,2,3,4]
b=np.array(b)
numpy配列プロパティの表示
b.size
b.shape
b.ndim
b.dtype
N次元配列のapi関数の迅速な作成
array_one=np.ones([10,10])
array_zero=np.zeros([10,10])
numpyはランダム配列npを作成する.random
np.random.normal(1.75,0.1,(2,3))
arr=np.random.normal(1.75,0.1,(4,5))
print arr
after_arr=arr[1:3,2:4]
print after_arr
one_20=np.ones([20])
print one_20
one_4_5=one_20.reshape([4,5])
print one_4_5
numpy計算(重要)
stus_score=np.array([[80,88],[82,81],[84,75],[86,83],[75,81]])
stus_score>80
np.where(stus_score<80,0,90)
統計演算
print np.amax(stus_score,axis=0)
print result
print np.amax(stus_score,axis=1)
print result
result=np.amin(stus_score,axis=0)
print result
result=np.amin(stus_score,axis=1)
print result
result=np.mean(stus_score,axis=0)
print result
result=np.mean(stus_score,axis=1)
print result
result=np.std(stus_score,axis=0)
print result
result=np.std(stus_score,axis=1)
はいれつえんざん
配列と数の演算
stus_score[:,0]=stus_score[:,0]+5
print stus_score
stus_score[:,0]=stus_score[:,0]*5
print stus_score
マトリックス演算np.dot()
計算ルール
(M行、N列)*(N行、Z列)=(M行、Z列)
q = np.array([[0.4], [0.6]])
result = np.dot(stut_score, q)
print result
マトリックスせつごう
マトリックス垂直接合
v1 = [[0, 1, 2, 3, 4, 5],
[6, 7, 8, 9, 10, 11]]
v2 = [[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]]
result=np.vstack((v1,v2))
print result
v1 = [[0, 1, 2, 3, 4, 5],
[6, 7, 8, 9, 10, 11]]
v2 = [[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23]]
result=np.hstack((v1,v2))
print result
numpyは、データnpを読み出す.getfromtxt
result=np.getfromtxt(“./students_score.csv”,delimiter=“,”)
pandas
pandasはnumpyに基づいて開発され、データ分析に特化したオープンソースpythonライブラリです.
Pandasの2大コアデータ構造
Series(1 Dデータ)
import numpy as np
import pandas as pd
print pd.Series(np.arange(4,10))
pd.Series([11,12,14],index=[“ ”,” ”,” ”])
pd.Series({“ ”:11,” ”:12,” ”:14})
DataFrame(マルチフィーチャーデータ、ローインデックス、カラムインデックス)
data_3_4=pd.DataFrame(np.arange(10,22).reshape(3,4))
print data_3_4
print(data_3_4[:1])
print(data_3_4[:][0])
# 3 4 DataFrame
data_3_4 = pd.DataFrame(np.arange(10, 22).reshape(3, 4))
#
print(data_3_4)
#
print(data_3_4[:1])
#
print(data_3_4[:][0])
#
result = pd.read_csv("./students_score.csv")
#
result.shape
#
result.dtypes
#
result.ndim
# ( / / )
result.index
#
result.columns
#
result.values
print("--> 5 :")
print(result.head(5))
# 5
print("--> 5 :")
print(result.tail(5))
# ( )
print("--> :")
print(result.describe())
pandaデータ読み出し(csvを例に)
pandas.read_csv(filepath,sep=“,”,names=None,usecols=None)
:DataFrame
result[‘ ’][0:6]
result[result[‘age’]>23]
IMDB_1000 = pd.read_csv("./IMDB-Movie-Data.csv")
#
print(IMDB_1000.dtypes)
# 1000 , ascending, True( ), False( )
IMDB_1000.sort_values(by="Rating", ascending=False)
#
IMDB_1000[IMDB_1000["Runtime (Minutes)"]==IMDB_1000["Runtime (Minutes)"].max()]
#
IMDB_1000[IMDB_1000["Runtime (Minutes)"]==IMDB_1000["Runtime (Minutes)"].min()]
#
IMDB_1000["Runtime (Minutes)"].mean()
#
IMDB_1000.dropna()
#
IMDB_1000["Revenue (Millions)"].fillna(IMDB_1000["Revenue (Millions)"].mean(), inplace=True)
# , ,
bcw = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data", names=["Sample code number","Clump Thickness","Uniformity of Cell Size","Uniformity of Cell Shape", "Marginal Adhesion","Single Epithelial Cell Size","Bare Nuclei","Bland Chromatin","Normal Nucleoli","Mitoses","Class:"])
# , ? np.nan
bcw=bcw.replace(to_replace=“?”,value=np.nan)
# 10
train = pd.read_csv("./train.csv", nrows = 10)
# time (s)
train["time"] = pd.to_datetime(train["time"], unit="s")
# year, month, weekday
train["year"] = pd.DatetimeIndex(train["time"]).year
train["month"] = pd.DatetimeIndex(train["time"]).month
train["weekday"] = pd.DatetimeIndex(train["time"]).weekday
データテーブルのマージ
# 3
user_info = pd.read_csv("./user_info.csv")
order_info = pd.read_csv("./order_info.csv")
goods_info = pd.read_csv("./goods_info.csv")
#
u_o = pd.merge(user_info, order_info, how="left", on=["user_id", "user_id"])
u_o_g = pd.merge(u_o, goods_info, how="left", on=["goods_name", "goods_name"])
# , ,
user_goods = pd.crosstab(u_o_g[" "],u_o_g["goods_name"])
データテーブルのグループ化
starbucks = pd.read_csv("./directory.csv")
#
starbucks.groupby(["Country"]).count()
#
starbucks.groupby(["Country", "State/Province"]).count()
matplotlib
matplotlibはpython 2 Dグラフィックス分野の基礎キットであり、ユーザーがデータをグラフィックス化し、多様な出力フォーマットを提供する.ここではmatplotlibの一般的な使い方を4つのケースで探求します
折れ線グラフを描く
import matplotlib.pyplot as plt
import random
# plt.plot([1, 2, 3, 4])
# plt.ylabel("some numbers")
# plt.show()
#
# plt.plot([1, 2, 3, 4], [1, 4, 9, 16], 'ro')
# plt.show()
beijing_x = [_ for _ in range(0, 24)]
beijing_y = [random.randint(10, 30) for _ in range(0, 24)]
plt.plot(beijing_x, beijing_y, label="beijing")
shanghai_x = [_ for _ in range(0, 24)]
shanghai_y = [random.randint(10, 20) for _ in range(0, 24)]
plt.plot(shanghai_x, shanghai_y, label="shanghai")
hefei_x = [_ for _ in range(0, 24)]
hefei_y = [random.randint(30, 40) for _ in range(0, 24)]
plt.plot(hefei_x, hefei_y, label="hefei", color="#823384", linestyle=":", linewidth=3, alpha=0.3)
##
x_ = [x_ for x_ in range(24)]
x_desc = ["{}h".format(_) for _ in x_]
plt.xticks(x_, x_desc)
y_ = [_ for _ in range(50)][::2]
y_desc = ["{}c".format(_) for _ in y_]
plt.yticks(y_, y_desc)
plt.xlabel("time")
plt.ylabel("temperature")
plt.title("the temperature change in one day")
plt.legend(loc="best")
plt.show()
import matplotlib.pyplot as plt
import random
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] #
mpl.rcParams['axes.unicode_minus'] = False # '-'
#
role_list = ["michael", "sdsds", "sdasd", "ffff", "gggg", "bbb", "nnn", "lll"]
role_age = [7, 17, 7, 34, 32, 30, 27, 46]
#
role_ture_age = [18, 17, 18, 34, 45, 30, 27, 46]
x = [i + 1 for i, role in enumerate(role_list)]
y = role_age
y2 = role_ture_age
plt.figure(figsize=(15, 8), dpi=100)
plt.bar(x, y, width=-0.4, label="role age", color="#509839")
plt.bar(x, y2, width=0.3, label="role real age", color="#c03035")
x_desc = [_ for _ in role_list]
plt.xticks(x, x_desc)
y = range(50)[::5]
plt.yticks(y)
plt.xlabel("role")
plt.ylabel("age")
plt.title("the role in cartoon Detective conan")
plt.legend(loc="best")
plt.show()