*頁アーカイブ*
 ③

       

*③頁目 目次*
 21.numpyを使った配列計算① / 22. numpyを使った配列計算②23.余談―データ操作の悩み /
 24.  /
 25. / 26. / 27. / 28. /
 29. / 30.

         
  

【第21回】 numpyを使った配列計算①-配列の生成

漫画21皆さんこんにちは。

人間て一年の大半を自粛していると、
季節感も時間間隔もよくわからなくなるんですね(゜-゜)笑
今年ももう残り少なくなってきた上、知らないうちに28歳になっていました…。

さて、今日は計算のときに便利なnumpyの使い方を紹介します。
単純な計算からちょっと高度な数式までカバーしているライブラリ
です。

私のように数学知識が壊滅的でもnumpyがあれば
計算が怖くありません!
(笑)
また、計算だけではなく配列も扱うことができるのでデータ処理にも
使えます。

使い所ですが、統計解析、機械学習、画像処理など…多岐です。

これまでpandasのDataFrameを使ったデータ処理を紹介してきましたが、
同じような抽出処理をnumpyのarray(配列)でも行うことが可能です。
私も実際にデータを扱うときは、用途によってDataFrame(pandas)
array(numpy)を使うか分けていますが、この2つが
データ分析をするにあたって、かなり重要なライブラリだということは
覚えておいてほしいです。

計算の際はList形式よりも使い勝手がよく、
短いコードで難しい計算も行ってくれるので優秀なヤツです。

では、サンプルコード記述します。
まずは適当に配列を生成してみます…

画像5-1.1

numpyをインポートします。

試しに配列を生成
Np.array([任意の配列]) -①
Np.arange(任意の数値) -②

①は任意の配列を、②は数値を入れます。
①はリスト形式をarray形式に変換する際によく使います。
②は新たな配列を生成する際に便利です。

また、次のようにarray形式は配列の変形が可能です。

画像5-1.2

b.reshape(-1,1) -③
b.reshape(2,5) -④

③は、もともと1行10列のデータを10行1列に変形しています。
b.reshape(-1,1)の代わりに、b.reshape(10,1)と記述しても結果は同じです。

④は2行5列に変形しています。

画像5-1.3

b.reshape(3,3) -⑤

このように、もとの配列の項目数と、変形後の項目数が一致しない場合はエラーとなります。


続きは次回


  

***㉒へ続く***      このページ最初に戻るこのページ最初に戻る ヘビカノTOPに戻るヘビカノTOPに戻る 環境システムTOPに戻る
0701**20201015


【第22回】 numpyを使った配列計算②-計算方法

  

漫画22こんにちは、今回は前回に引き続きnumpyを使った計算についての
お話です。

list形式numpyのarray形式の違いに着目しながら
解説していこうと思います。

さて、私はVBAからPythonを始めたので配列に関しては
リスト形式がポピュラーなものだと思いこんでいました。
ですが、Python内で計算を行うとき、リスト形式だと
for~の繰り返し構文を使わないといけないので、
場合によってはしばし面倒
です…

また、予測やその他モデルを使った本格的な分析を行う際にも、
入力データにarray型を要求されることがほとんどなので、
ここで一つ、私自身心許ない知識ですが説明を行います (笑)



リスト形式の掛け算

まず、リスト形式の掛け算から見ていきましょう。



結果は↑のように、リスト配列がまるごと倍になっています

これを、[100×2,200×2,300×2,400×2,500×2] のように
各項目ごとに×2の計算を行いたいときはfor~構文で処理を行います。



for~構文を使って記述するときちんと掛け算できていますよね!
for~構文は40行目、インデントを使って記述するのが一般的ですが、
46行目のように、括弧でくくった内包記でも同じ結果がでます。
内包記の場合は“ans=[]”、”ans.append()”などの記述が必要ないのでお手軽ですね♪

※(ans=[] : 空のリストを生成 /ans.append() : listの末尾に追加)



array変換の計算

次はこの計算をnumpy.arrayで実行する場合。こちらをごらんあれ…



この通り、わざわざfor~の繰り返し処理を行わなくても掛け算ができます!

まあ正直、計算に関してlist/arrayどちらの方法を選ぶかは個人の好みですが、 1つポイントがあります(^u^)

前回の記事で、array形式は自由に配列の変形をすることが可能と書きましたが、
長さの違うものをarray配列として扱うこと、またこれを一つに結合するという処理はできません


例えばこのように…



長さが異なる配列(arr)はarrayに変換されずlistのまま出力されています。

もちろん変形にも支障があります。



[[1,2,3,4],[5,6,7],[8,9,10,11]] ←長さが3ということになっているのでエラー表示が出ています。

これは、実際の生データを使って分析を行う際に気をつけることでもあります。
特に機械学習用などを目的としている場合は、データの前処理や整形を行う必要もでできますしね(゜-゜)

例えば一ヶ月間の測定データがあったとして、日毎に測定できたデータの数がバラバラな場合、
データセットの行列を揃える必要がありますので、
私はまず、DataFrameやlist形式にしてからfor~文等でデータのクレンジング(クリーニング)処理を行い、
長さを調整してからarray形式に直しています。

意外とめんどくさい作業なんですよねこれが(笑)

…と、まあ
長くなりましたが今回はこれにて!

     

***㉓へ続く***      このページ最初に戻るこのページ最初に戻る ヘビカノTOPに戻るヘビカノTOPに戻る 環境システムTOPに戻る
0701**20201105

       

【第23回】 余談―データ操作の悩み

漫画23こんにちは、皆さん。
Numpyの操作はまだまだ沢山あるんですが、今日は休憩がてら世間話に
お付き合いください(笑)

ヘビカノページの設立とコラム開始からまだ1年経っていないのですが、
私はPythonを初めからもうすぐ2年が経とうとしています…

コラムで紹介しているのは基本的な内容+αですが、
モトハシの実際のスキルというか…実務の面では、最近になって
やっと簡単な機械学習の実装ができるようになりましたヽ(`▽´)/ワーイ

機械学習についてネットで調べると、沢山の例文や実装コードがあって、
見た目には簡単そうに感じるんですが、どれも最初からPythonに内蔵されて
いるサンプルデータを使用した例が多く、実際のデータを使った例は少ないん
ですよね…。

サンプルデータはそのまますぐ使える整理されたデータなのですが、
私が普段操作している生のセンサーデータには記号やらノイズやら
明らかに他と違うデータというのが混じっています(*_*)
記号や文字列なんかは、データを読み込む段階である程度排除できるんですが (それこそpandasは優秀です)、ノイズをはじめ、部分的な外れ値、
フィルターが掛けられたような広範囲のエラー値にいつも悩まされる…。

そもそも、こういったものが混じったデータは使用しない!というのが一番
なんですが、うちのセンサーは水中に設置して使うものなので、
天候や流速、水中生物やらの影響を受けるので、エラーが無いほうがおかしい
のです。

そう。悩んでも仕方の無いことなのです…。

ではこの荒れ果てたデータをどうやってきれいにするんだ!って話になりますが、
感覚的なもので作業するより、確立された方法でシュパパパとデータの整理ができた方が安心ですし、
楽ですよね!

そこで、これまで統計分野での評価、異常検知用のアルゴリズムが搭載されたモデルを使った方法…など、
色々と試してみたんですが、目的とするエラーのうち、全てに有効ではない、計算時間が掛かりすぎる、
正常なデータまでエラー認識されているなど、イマイチ実用性に欠ける結果となりました。トホホ。

悩んだ挙げ句、現在は分類器を使った仕分けを試みております。
分類器というと、使用するライブラリ(sklearn)の種類的に機械学習のくくりになるんですが、
「機械学習用のデータを作るために機械学習でデータの分類する」というと、何だか変な気分です(´・ω・`)

まだまだ作業途中なので詳しいことは書けませんが、ああ、もとちゃん大変なんだな~くらいに
思ってください (笑)

きっと扱うデータに厚みがあったり、高次元で複雑な場合、こういった壁にぶち当たるしょうね…。
壁、突破しました!という方、こっそり教えて下さい(^u^)
大手グ○グルさんはどうやってデータ処理してるのか気になります…。

ではまた!

     

***㉔へ続く***      このページ最初に戻るこのページ最初に戻る ヘビカノTOPに戻るヘビカノTOPに戻る 環境システムTOPに戻る
0701**20201119

       

【第24回】 


     

***㉕へ続く***      このページ最初に戻るこのページ最初に戻る ヘビカノTOPに戻るヘビカノTOPに戻る 環境システムTOPに戻る
0701**20200702

       

【第25回】 


     

***㉖へ続く***      このページ最初に戻るこのページ最初に戻る ヘビカノTOPに戻るヘビカノTOPに戻る 環境システムTOPに戻る

0701**20200716


【第26回】 


     

***㉗へ続く***      このページ最初に戻るこのページ最初に戻る ヘビカノTOPに戻るヘビカノTOPに戻る 環境システムTOPに戻る

0701**20200806


【第27回】 


     

***㉘へ続く***      このページ最初に戻るこのページ最初に戻る ヘビカノTOPに戻るヘビカノTOPに戻る 環境システムTOPに戻る

0701**20200820


【第28回】 


     

***㉙へ続く***      このページ最初に戻るこのページ最初に戻る ヘビカノTOPに戻るヘビカノTOPに戻る 環境システムTOPに戻る

0701**20200903


【第29回】 


     

***㉚へ続く***      このページ最初に戻るこのページ最初に戻る ヘビカノTOPに戻るヘビカノTOPに戻る 環境システムTOPに戻る

0701**20200903


【第30回】 


     

***㉛へ続く***      このページ最初に戻るこのページ最初に戻る ヘビカノTOPに戻るヘビカノTOPに戻る 環境システムTOPに戻る

0701**20200917