Pythonではじめる機械学習
atcoder.jp・参考: よくやる再帰関数の書き方 〜 n 重 for 文を機械的に 〜 - けんちょんの競プロ精進記録・やったこと:参考記事の内容をpythonで勉強した。長さがNのリストAをDFSで全探索する。その時の得点(score)が一番高いものがansになる。 #参考:ht…
In[63] ram_prices=pd.read_csv(os.path.join(mglearn.datasets.DATA_PATH,"ram_price.csv"))のos.path.joinは例えばos.path.join("A","B")でA/Bとパスを連結させる。plt.semilogy(ram_prices.date,ram_prices.price)はplt.semilogyでy軸を対数軸(10の何乗か…
決定木においてどの特徴量が重要かfeature importanceでわかる。0だとまったく使われていない、1だとこの特徴量で完全にターゲット(予測したい値)を予測できる。これはprint(tree.feature_importances_)で確認できる。In[61]よりどの特徴量が大事か可視化で…
In[58] export_graphviz(tree,out_file="tree.dot",class_names=["malignant","benign"],feature_names=cancer.feature_names,impurity=False,filled=True) ・out_fileがファイル名。 ・filled=Trueで分岐のときにノードを色わけしてくれる。 ・class_names…
2.3.5 決定木とは分類、回帰に使われる。Yes/Noで答えれる質問で答えを出す。例えば熊、鷹、ペンギン、イルカを最小の質問でわけたい。 これはmglearn.plots.plot_animal_tree()で確認できる。機械学習的に言うと熊、鷹、ペンギン、イルカを3つの特徴量(つま…
2.3.6では多クラス分類をする。ここで使うデータはガウス分布に従う2次元データである。 In[46] これはfrom sklearn.datasets import make_blobsでmake_blobsデータを使う。X,y=make_blobs(random_state=42)とする。 Xは [[-7.72642091 -8.39495682] [ 5.453…
LogisticRegressionをcancerデータに使ってみる。ここでC(大きいと正則化が弱まる)を色々と変えてみる。デフォルトのC=1では適合不足しているのでC=100に増やす。In[44]で様々なCに対しての重みの大きさをプロットする。 In[44]について plt.xticks(range(ca…
線形モデルの分類はy=w[0]*x[0]+...+w[p]*x[p]+b>0。これは線形回帰と違いyが0より大きいか判断する。 線形クラス分類はロジスティクス回帰と線形サポートベクタマシーンがある。ロジスティクス回帰は回帰とあるが分類である。 これらのモデルにはパラメー…
In[33] plt.plot(ridge.coef_,'s',label='Ridge alpha=1')の's'はマークを四角にする。 plt.hlines(0,0,len(lr.coef_))は水平線を引く。引数は(y,xmin,xmax)でそれぞれ水平線を引くyの値、水平線のはじめ、水平線の終わりである。 またこの図はalpha=10では…
通常最小2乗法はデータと直線の点の差の2乗が最小になるように直線が引かれる。またfrom sklearn.linear_model import LinearRegressionで使うことができる。これは特徴が多いとき有効であるが過剰適合してしまう。 よって次に過剰適合を解決するためにリッ…
line=np.linspace(-3,3,1000).reshape(-1,1)のnp.linspace(-3,3,1000)は-3から3の間で1000個値を作る。具体的にはnp.linspace(-3,3,1000)は [-3. -2.99399399 -2.98798799 -2.98198198 -2.97597598 -2.96996997 -2.96396396 -2.95795796 -2.95195195 -2.9459…
fig,axes=plt.subplots(1,3,figsize=(10,3))figが描画の領域全部のことでaxesが1つ1つの図を意味する。また引数は描画の領域が1つ、図が3つ、figsize(10,3)は描画の領域のサイズが横縦、10:3の比率を表す。 for n_neighbors,ax in zip([1,3,9],axes):n_neigh…
cancer.target_namesの中身は ['malignant' 'benign']。 cancer.target中身は [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 0 0 1 1 1 1 0 1 0 0 1 0 1 0 0 1 1 1 0…