FAQ

PythonによるAI手法

【回答】

 

from math import * でインポートした場合はmathが不要になり、いきなりsqrt(2)のようにして
関数を使うことができます。

【回答】

 

おっしゃる通り、各メソッド内にprint文を書いても構いませんし、そのようにした方が楽です。
各メソッド内にprint文を書かなかった理由は、以下の通りです。

 

演習1-9では

 – `speed_up`:速度を10だけ上げる。

 – `stop`:停止する。
 – `sell`:車を売却する。車の所有者を`None`に設定する。

 

というように問われており、print文も書きなさいとは求められていません。

 

そのため、各メソッド内に最低限書くべきコードとして

 

def speed_up(self):
       self.velocity += 10
def stop(self):
self.velocity = 0
def sell(self):
      self.owner = None

 

と解答例を示しました。

【回答】

 

エラー文を読みますと、インデントが揃っていないのがエラーの原因のようです。
このエラーは実行環境とは無関係ですので、インデントが揃っているのか確認をお願いいたします。

【回答】

NumpyやPandasでは、行に対して操作を行う際はaxis=0を、列に対して操作を行う際はaxis=1を指定します。
これはそういうものだと覚えるしかないです。
そのため、dropna()を使って欠損値を1つでも含む列を削除する際はaxis=1を指定します。
一方、dropna()を使って欠損値を1つでも含む行を削除する際にaxisを指定しなくて良いのは、
dropna()メソッドではaxisのデフォルト値が0になっているからです。
(参考 https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.dropna.html)
したがって、行を削除する際はaxis=0とわざわざ指定する必要はありません。

【回答】

 

同じコードであれば、基本的に何度実行しても結果は同じになるはずなので、
そのようなケースは初めて聞きました。
私の手元でもその現象が発生するのか確認したいため、具体的なコードやスクリーンショットなどをご共有いただけると幸いです。

【回答】

 

実は私もその違いを明確には理解してないのですが、おそらくspiecesカラムのデータ型が異なっていたためだと考えられます。
推測ではありますが、初回の実行時はspiecesがカテゴリカル変数だと認識されるデータ型であったのに対し、
2回目の実行時はカテゴリカル変数だと認識されない、別のデータ型として読み込まれていたのではないかと考えています。

【回答】

 

私の方でコードを実行したところ、確かに回帰係数が全て0となりました。
ご指摘いただき、ありがとうございます。

ラッソ回帰では罰則項の影響度合いを決めることができるのですが、
今回のデータに対してscikit-learnのLassoを使うと、
その罰則項の影響が強過ぎて回帰係数がいずれも0となってしまうようです。

そのため、対策としては罰則項の影響度合いを決めるalphaという値を、
デフォルト値の1より小さくすれば良いです。
コードは下の画像のようになります。
今回は適当にalpha=0.01と設定しました。
alphaはハイパーパラメータですので、alphaの最適な値をきちんと決めるなら、
テストデータの精度が最大となるようにハイパーパラメータチューングするのが望ましいです。

 

 

また、scikit-learnのLassoクラスの公式ドキュメントは下のリンクになります。
もしLassoの使い方や詳しい仕様についてより深く知りたいということであれば、
そちらをご参照ください。
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.Lasso.html

【回答】

 

私がそのコードを実行したところ、以下の画像のようになりました。

 

 

ご指摘いただいた通り、講義動画とは異なり「/usr/local/lib/python3.10/dist-packages/sklearn/cluster/_kmeans.py:870: FutureWarning: The default value of `n_init` will change from 10 to ‘auto’ in 1.4. Set the value of `n_init` explicitly to suppress the warning」という表示が出ました。
メッセージを読むと、「FutureWarning」と書かれていますので、これはエラーではなく警告文です。
そのため、実行上は何も問題なく、無視して構いません。
この原因は何かしらのライブラリのバージョンが変更されたことが原因だと考えられます。

もしこの警告文に従うなら、下の画像のように、KMeansクラスの引数にn_initを指定すれば良いです。
こうすれば警告文は表示されません。

 

【回答】

 

te.columns_は、商品名がlistになったものです。
print(the.columns_)を実行すると、下のように出力されます。
te.columns_が何を意味しているか知りたい場合は、それを出力すると良いでしょう。

 

 

teに対して「.columns_」でアクセスすると商品名のlistを取得できるのは、
TransactionEncoderの仕様でして、これはそういうものだと理解するしかないです。
ただ、これは頻繁に使うものではないので覚える必要はありません。

【回答】

 

metricで指定した指標がmin_threshold以上であるような商品の組み合わせが出力されるという認識が正しいです。
つまり、min_thresholdで設定できるのは、metricで指定した指標の最小値です。

 

また、metricsを指定しなくてよいのは、それがオプション引数だからです。
関数の引数には「必ず指定する必要がある引数」と「指定しなくても良い引数」の2種類があり、
後者をオプション引数といいます。
関数を実行する際は、そのオプション引数を指定しなくても良く、その場合はデフォルト値が採用されます。
オプション引数には予めデフォルト値が定められおり、それを確認する方法をご紹介します。

 

実はPythonでは、関数などにカーソルを当ててしばらく待つと、下の画像のように、
その仕様や説明などが表示されます。
ここでは、「association_rules」にカーソルを当てることで、その関数の仕様や説明を表示させています。

 

そして、そこには「metric=‘confidence’, min_threshold=0.8」と書かれています。
これは「〇〇=△△」の形で書かれているため、デフォルト値が設定されていることがわかります。
〇〇がオプション引数で、△△がそのデフォルト値を表しています。
したがって、metricsやmin_thresholdは必ずしも設定する必要はなく、
それぞれ’confidence’と0.8というデフォルト値が設定されていることがわかります。

 

そのため、metricsを指定しなくても関数は実行できるわけです。
講座でmetricsを指定するように説明したのは、metricsを切り替えることで、
基準となる指標を変更できることをお伝えしたかったからです。

 

【回答】

ロジスティック回帰は2値分類を行うモデルなので、評価指標は2値分類用のものでなければなりません。
したがって、回帰タスク用の評価指標を使うことはできません。

【回答】

 

「1になる確率」=「0~1の予測値そのもの」ではありませんが、「1になる確率」を元に0か1か予測します。
具体的には、1になる確率がある閾値よりも大きければ1と予測し、小さければ0と予測します。

 

また、「0になる確率」を採用してもOKです。
1から「1になる確率」を引いたものが「0になる確率」になるので、「0になる確率」を使って予測することは可能です。
この場合、「0になる確率」が閾値より大きければ0と予測し、小さければ1と予測します。
ただ、一般的には「1になる確率」を考えることが多いです。

【回答】

正しく実行すれば、講義動画にようにsparse無しの実施時に614×2になると思います。
614×1になってしまった原因としては、encodingを誤って複数回実行しているなどが考えられます。
ノートブックを再起動した上で、再度コードを実行していただき、それでも同じ様な問題が発生するのであればご連絡ください。

【回答】

 

Google Colabで作成したファイルが読み取り専用になったケースは聞いたことがなく、
どのような場合にそのようなトラブルが発生したのかわからないため、明確な回答を差し上げることができません。
一般的な回答になりますが、Google Colabは一時的にアイドル状態が続くと接続が自動的に切れることがあるため、
その場合、ブラウザ上に残って表示されているファイルは読み取り専用になるかもしれません。
このように、Google Colabの同期の問題でファイルが一時的に読み取り専用になる可能性があります。
もし他の原因に心当たりがありましたら、ご連絡いただきたいです。

【回答】

 

私の方で実行してみたところ、以下のようにエラーなく実行できました。
エラーが発生するのは、おそらく何かしらのセルを複数回実行するなどによって変数dataが書き換えられたからなのではないかと思います。
ノートブックを再起動した上で再実行していただければ、そのエラーは出ないと思われますので、ご確認いただきたいです。
もしそれでもエラーが発生するのであれば、再度ご連絡いただきたいです。