表題のような現象が見られたので,次のように書き換えてみた
import matplotlib import matplotlib.pyplot as plt plt.style.use('ggplot') # ggplotを使う matplotlib.rc('font', family='sans-serif')
表題のような現象が見られたので,次のように書き換えてみた
import matplotlib import matplotlib.pyplot as plt plt.style.use('ggplot') # ggplotを使う matplotlib.rc('font', family='sans-serif')
FutureWarning: pd.rolling_mean is deprecated for Series and will be removed in a future version, replace with ・・・
Pandasで条件を指定して行・列を抜き出すやつが有ると思います.正式名称は分かりませんが,df[val>0]みたいなやつです.Numpyのarrayでおんなじことが出来るか試したので,メモ書きしておきます.
まずはこんな感じで配列を作ります.そして1個飛ばしで列を獲得できるかやってみます.
In [31]: import numpy as np In [32]: a = np.array([[ 0, 1, 2, 3], ...: [ 4, 5, 6, 7], ...: [ 8, 9, 10, 11], ...: [12, 13, 14, 15]]) In [33]: label = np.array([ 0, 1, 0, 1]) In [34]: mask = (label == 1)
まずは一個飛ばしで列を獲得してみます.
In [35]: a[:,mask] Out[35]: array([[ 1, 3], [ 5, 7], [ 9, 11], [13, 15]])
続いて一個飛ばしで行を獲得してみます.
In [36]: a[mask,:] Out[36]: array([[ 4, 5, 6, 7], [12, 13, 14, 15]])
それでは,一個飛ばしで行と列の両方を獲得するにはどうやるのでしょう?
In [37]: a[mask,mask] Out[37]: array([ 5, 15])
これだと上手く行かないので,次のように書いてみました.
In [38]: a[:,mask][mask,:] Out[38]: array([[ 5, 7], [13, 15]])
argmaxとargminについて書いてあるようなタイトルですが,本記事ではargmaxのみです.argminも使い方は同じなので書いてません.
まずは配列を用意します.
In [8]: import numpy as np In [9]: a = np.array([[1,2,3],[4,5,6],[7,8,9],[2,8,2]])
あとはご覧の通り
In [10]: a.argmax(axis=0) Out[10]: array([2, 2, 2], dtype=int64) In [11]: a.argmax(axis=1) Out[11]: array([2, 2, 2, 1], dtype=int64) In [12]: a.argmax() Out[12]: 8
全部足すか列ごとに足すかの違いでした~
In [46]: import numpy as np In [47]: A=np.array([[ 2,4,6.], ...: [ 4,8,12.], ...: [ 6,12,18.]]) In [48]: A.sum() Out[48]: 72.0 In [49]: A.sum(1) Out[49]: array([ 12., 24., 36.])
Pythonのscikit-learnのカーネル関数を使ってみたので,メモ書きしておきます.いやぁ,今までJavaで一生懸命書いてましたが,やっぱりPythonだと楽でいいですねー.
もくじ
最初につまずいた所.一次元の配列だとエラーが出るみたいです.
import numpy as np from sklearn.metrics import pairwise x = np.array([1, 1]) #([[1, 1]])と書かないとエラーになります print(pairwise.rbf_kernel(x))
と書くと,
DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.
と言う具合に「データとしての1次元配列の受け渡しは0.17で廃止されました」と言われます.なので,ベクトルを使う場合は一次元の列であることを書かないと駄目みたいです.
検算が簡単そうな線形カーネルから試してみたいと思います.
リファレンスはこちら
sklearn.metrics.pairwise.linear_kernel — scikit-learn 0.19.1 documentation
リファレンスを見ながら単純な例を試しみました.
import numpy as np from sklearn.metrics import pairwise x = np.array([[1, 1]]) y = np.array([[2, 2]]) print(pairwise.linear_kernel(x,y))
線形カーネルの計算式は次の通りです.
内積を計算しているので,出力は4になるはずです.
出力結果 [[ 4.]]
と狙い通りになりました.
実際のデータは,例えば2次元のデータならば という具合になるわけです.
ではデータが多次元の場合はどうなるでしょうか??
import numpy as np from sklearn.metrics import pairwise x = np.array([[1, 1],[2, 2],[3, 3]]) print(pairwise.linear_kernel(x))
と書くと出力結果はこうなります
出力結果 [[ 2. 4. 6.] [ 4. 8. 12.] [ 6. 12. 18.]]
これって例えば とあったら,上の行は ,,と計算しているみたいで,上から二段目の行は ,,と計算しているみたいです.3行目も同じようです.
ドキュメントは下記の通り
動径基底関数はなんぞや?という話は次の通り
実際に使ってみるとこんな感じです.
import numpy as np from sklearn.metrics import pairwise x = np.array([[1, 1]]) y = np.array([[2, 2]]) print(pairwise.rbf_kernel(x,y))
と書くと
[[ 0.36787944]]
物の本を読むとらしいのですが,このライブラリの場合はなにもしないとらしいです.なので
きょうはこんな感じで
PyCharmをインストールしようとしたら32Bitのlauncherしか出ない.
stackoverflow.com
ここにも書いてあるように64BitのJDKをインストールする