この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
広告
posted by fanblog
2019年09月22日
【10日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
進捗100%(+9%)
■ついに10日目に突入!
予定では本日完了になるはずである。
残りの講座の動画の時間は57分となっている。
最後のプロジェクト演習はTwitterのタグ解析プロジェクトだ。
■Twitterデベロッパー登録!
このプロジェクトを進めるためにはTwitterのデベロッパー登録が必要だ。
いきなり敷居が高くなって今日中の完了が危ぶまれたが、申請をすると瞬時にOKが出て何とか登録を行うことができた。
■Streaming プロジェクトの実行
最終回のプロジェクトなのでどれだけ難しいかと思いきや、以外にすんなりと進んだ。
コードが多過ぎるので、jupyter notebookの保存ファイルのコマンドを実行するだけだけであった。
ちょっと拍子抜けな感じ。
しかしながら、これだけの作業だがプログラムをいざ実行するとエラーが出てしまい、うまくいかない。
最初の数回はタイポなどのミスだったが、それを修正しても一向にうまくいかない。QAセクションを見ると類似した質問があるので、とりあえず、この質問をウォッチすることにして、何とか100%として完了とした。
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング
【このカテゴリーの最新記事】
- no image
- no image
- no image
- no image
- no image
2019年09月21日
【9日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
進捗91%(+10%)
この講座も佳境になってきた。
NLPのより実践的なコードの学習が終わると最後のセクションのSpark Streamingの学習となる。
NLPの学習だが、週末のごたごたもあり、なかなか思い通りに進んでいない。
コードの内容は理解しているのだが、自分でコードを書くところがイマイチ集中できなくて進まない。
Token分割などたいして難しいわけでもないのだが。。。
早く、次のブロックチェーンの勉強に入りたい!
とりあえず、気晴らしに前のチャプターを見返すとAWSのEC2、Databricks,AWS EMR Clusterの部分が未完了となっていることに気づいた。
今回、VirtualBoxを使って学習を行っているので飛ばしたところだ。
これらを完了状態して、何とか進捗は91%を確保した。
蛇足だが、この講座はVirtual BoxでUbuntuを動作させ、Ubuntu上でpysparkのコードを実行して受講を進めている。
しかし、このVirtual Boxの動作が不安定で高い頻度でゲストOSのUbuntuがフリーズするため、定期的にゲストOSの電源をリセットしながら進めている。
だから、余計に時間がかかったり、集中力を下げる原因になっている。
この状態を解消するため、Windowsでも環境を作りたいところだが、Ubuntuはver.17から64bitのみのリリースになっているが、残念ながら私のPC環境ではCPUが古すぎるため、64bitOSのVirtualBox仮想環境を作ることができない、ということが分かった。
さいわい、今、消費税増税前のセールでPCが叩き売られている。
よい機会なので購入をした。
(ただし、現在在庫切れにつき、いつ納品されるかわからない状態だが)
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング
2019年09月20日
【8日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
進捗81%(+11%)
K-means Clusteringのプロジェクト演習まで来た。
いつもの通り、サマリを作っておき、ゼロから自分でコードを再生できるところまで練習した状態で状態でプロジェクト演習を行う。
サマリ:
・データの読み込み
・KMeans宣言
・入力データ作成
・スケール適用
・入力データをスケール結果に置換
・KMeans適用
・wssse
・クラスタリングのセンター
・分類確認
プロジェクト演習は何の問題もなく完了。
次にRecommender Systemのセクションに入る。
このセクションはプロジェクト演習なし。
リコメンダーシステムは大きく分けて2つあるとのこと。
?@コンテンツベース
?ACF(コラボレーティブフィルタリング)
pyspark.mlライブラリでは、ALSという?Aのコラボレーティブフィルタリングを
サポートしている。
サクッと終わらせてNLPに入る。
Natural Language Processing(NLP)とはテキストをクラスタリングしたり、比較することにより、おすすめの本を表示したり、Spamメールを摘出をしたり、ドキュメントの分類や解析を行ったりすることができる。
アルゴリズムとしては、TF−IDF(Term Frequency Inverse Document Frequency)が真っ先に挙げれる。
テキスト解析するためには、テキストを単語単位に分解したり、解析に不要な単語(aとかtheとか)を取り除くような処理が必要になる。
pysparkにはこれの機能が備わっているので、一通りの動作をコーディングしながら確認した。
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング
2019年09月19日
【7日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
進捗70%(+5%)
Decision Tree&RandomForestsのプロジェクト演習完了。
できたはできたが、模範解答とは違ったが。そろそろ、習ったことだけでなく、
それをきっかけに、ライブラリの詳細をドキュメントで見ていく必要があるのかなあ。
理論の知識も充実していく必要がありそう。
K-means Clusteringのセクションへ入った。
K-means Clustring(K平均法)はクラスタリングのアルゴリズムだ。与えられたK個にクラスタへ分類を行う。
処理の流れは
1、featureの取り出し
2、シード設定
3、クラスタリング実行
4、コスト計算、中心計算
といった流れだ。
教師なしのアルゴリズムであるため、クラスタリング実行の際は、元データを学習データ、テストデータへ振り分ける処理は必要がない。
この部分が今まで習った機械学習と大きく異なる点だ。
また、距離の概念が入るため、扱うのは数値になるので、StringIndexerとかは必要なさそうだ。
その分、コードもシンプルになるので、簡単に感じる。
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング
タグ: 機械学習
2019年09月18日
【6日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
進捗65%(+7%)
Logistic Regressionの学習を終えてDecision とRandomForestsのセクションに突入。
Logistic Regressionの学習ではPipeLineのところで躓いた。
PipleLineに渡すのリストを文字列と勘違いして、しばらく悩んでしまった。
後から考えてみるとエラーメッセージも正しく出ていたし、普通に考えて、関数を1つずつ実行するのだから、リストが文字列になる訳がないのだが。。。
何とかプロジェクト練習問題も終えることができた。
Decision とRandomForestsは、スラスラ進んでいる。
コーディングは特に問題ないが実行結果の評価方法の理解が若干怪しい。
いろいろ評価パラメータが出てくるので何で評価をしているのかを深く理解したい。
機械学習のアルゴリズムだが、
1、データ読み込み
2、データ準備
3、トレーニング
4、テスト
5、評価
の流れで進むので処理がほとんど同じようコーディングの流れになっているので覚えやすい。
普通に考えて、1,2,5はアルゴリズムによらず、だいたい一緒だし、強いて言うなら、入力データの文字列をインデックスに変換する処理が必要になるくらいだ。
また、機械学習の要の3,4も結局は関数に入力データを入れて、計算するだけなので、どれもこれも一緒になってしまうのだろう。
できれば、今週末には受講を完了したい。
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング
タグ: 機械学習
2019年09月17日
【5日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
進捗58%(+3%)
Logistic Regressionの学習を進めている。
疲れ気味のため、進捗が少ない。
模擬プロジェクト練習問題に入る前の知識の確認中。
Logistic Regressionの学習中に気が付いた点を2点メモしておく。
1、DataFram.head()と head(1)を実行した結果が微妙に違うのに気が付いた。
・df.head() →Rowオブジェクト
・df.head(1) →Rowオブジェクト1個の配列
先頭データの内容を表示する際にforループする際にはそれぞれ
・df.head()の場合
・for i in df.head():print(i)
・df.head(1)の場合
・for i in df.head(1)[0]:print(i)
とする。
2、Pipelineをインポートする際に"pipeline"(全部小文字)が選択肢に出てくるが、
これは使わず"PipeLine"を使うこと。
×:from pyspark.ml import pipeline
〇:from pyspark.ml import Pipeline
10分くらい時間をロスしてしまった。
うーん、紛らわしい。
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング
2019年09月16日
【4日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
まあまあ順調。
達成感があり、楽しい。
LinearRegressionの学習。
一通り理論の説明とコードの説明を受講した後、自分で0から機械学習のコードが再現できるように時間をかけて練習を重ねた。
再現をする際にpyspark.mlとpyspark.mllibの2つが出てきてmllibを選択するとRDD用のAPIのため、現在勉強しているDataFrameの場合はその後必要なAPIが出てこなくなり、うまくコード化ができない罠に引っかかってしまった。
自動補完に頼りきりになったり、大体感覚で覚えているのではだめで、実際に自分で0からコードを書いて練習することが良いことを再認識した。
この章の最後は模擬プロジェクトでの練習問題だ。
この部分はリアル感があり、非常に面白い。背景説明から入り、データを与えられて、機械学習のモデルを作るのだ。
0からのLinearRegressionの機械学習のコードをかけるようにしてから臨んだため、スラスラ解くことができ、非常に達成感がある。
Logistic Regressionの学習。
LinearRegressionと違い、分類をするための機械学習だ。
ただし、LinearRegressionのコードと似ている所もあるので、とっつきやすい。タイタニックを題材とした問題をスタートするところで本日の学習は終わりとした。
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング
2019年09月15日
【3日目成果】 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
進捗47%(+13%)
順調ではあるが苦労した。
知識の定着が十分でなかったため、DataFrameの章の最後の練習問題に非常に時間がかかった。
原因を考えるといろいろ思い当たることがある。
・進捗を優先したために理解が不十分
・英語講義を理解せずに聞き流していた
・コマンド自体は簡単なので使うときに調ればいいや、と思い覚えなかった
・多数のコマンドを短時間にあてもなく説明されるのでストーリー立てて思い出すのが難しい
・勉強するにあたり目的意識が低い(仕事に直結するわけではない)
結局、問題の半分くらいで自力で解くことは中断し、DataFrameの章の復習をして自分なりにまとめてみた。そして、練習問題をやり直したがそれでもちょこちょこ確認が必要になった。
自分で重要と思って覚えているところと実際に手を動かして解く際に引っかかる場所が違っている感じだ。
まだ自分の頭の中でpysparkの勘所と整理ができていないのだろう。
時間がたったら、練習問題をやり直すことにして、次の機械学習の章に突入した。
これから1つの講義が終わったら、自分なりに何を学んだかメモをするようにする。
(ただし、概要のみ。これをトリガーに詳細を思い出せるようなメモ程度)
●DataFrameの章で学んだことのメモ
・pysparkの初期化/修了
・データのロード
・read.csv, read.json
・オプション指定
・データの基本情報
・describe,printSchema
・データの表示
・show, head
・データタイプの確認、設定
・type
・データ操作
・列選択、表示
["列名"], Select(["列名"])
・列追加
withColumn
withColumnRenamed
・sqlコマンド使用
・createOrReplaceTempView("名前")
・spark.sql("コマンド")
・行選択、表示
・filter
・グループ化
・groupBy
・行の辞書変換
・asDict()
・計算
・max,min,count,mean,sum(列),selectと組み合わせて使う。
・agg({列:上の関数})
・関数
・準備
functions,
・関数
countDistinct,avg,stddev
alias
・数値フォーマット
・準備
・format_number
・ソート
・orderBy
・desc()
・日付処理
・関数
dayofmonth,hour,dayofyear,month,year,weekofyear,data_format
・データなしの処理
・カラムで、個数で、どれか、すべて
・na.drop(how=any|all,thresh=None,subset=None)
・データ補完
・na.fill()
・中央値で補完mean
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング
2019年09月14日
【2日目成果] 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
進捗34%(+7%)
思った通りに進められてない。+10%くらいは進みたいのだが...
講座自体は難しくないのだが、いくつか問題?課題?に遭遇し、解決をしながら進めている。
まず、VirtualBoxをインストールした際に画面の解像度が低いままでスタートしていた。いい加減、受講しにくいため、調査、設定を行い、Guest Additions CDのインストールを行い、解像度を上げることができ、事なきを得た。
次に、sparkが思うように動作しない現象が起きた。
所定のコマンドを実行するとエラーが表示されてしまう現象だ。調べてみるとsparkはjdk8の環境で開発されているようであり、使用しているUbuntu18.04の環境はJDK11であった。このため、javaのバージョンの不整合が起こりエラーになっているようだ。講座のQAを調べると同様の現象の書き込みがあった。open-jdk8をダウンロードして使用すればよいとのことで、環境構築をやり直して正常に結果が表示されるようになった。
受講者が多く、QAが盛んであると困ったときの解決の情報が充実しており、非常に助かる。
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング
2019年09月13日
【1日目成果] 英語版Udemy講座で学ぶ!SparkとpythonでBig Data解析
進捗27%
順調に進んでいる。
といっても、ほとんどは環境のセットアップとPythonの基礎の復習だ。
演習環境解いてVirtualbox、AWS EC2、DataBricksの3つを用意している。
今回は、最も簡単なVirtualboxで環境を構築して、いったん講座を完了しようと思っている。
Pythonはデータ操作の復習でPandasやNumpyをやるわけではない。本当の巨大なビックデータではこれらのライブラリは使えないのだそうだ。だからPythonの基礎の部分のみのおさらいのため、あっという間に終わる。
英語に関しても前回と同様の講師はJoseさんなので、特に難しいことはない。このように英語のでの講座選択をする場合は、一人良い講師を見つけたら、その人の講座を集中的に受講すると効率が良いのでおすすめだ。
このコースへのリンク
Spark and Python for Big Data with PySpark
全般ランキング
タグ: Python