python csv ファイルが読み込めない時の対処法

CSVファイルをダウンロードしたはずなのにできない!

先日pythonを使って sckitlearnという統計処理のライブラリを使用して見ました。結果が以下のものです。

f:id:higuzeroggw:20180430143532p:plain

なんか色々あるけど、最後は、”FileNotFoundError: File b'winequality-red.csv' does not exist”と表示。要はファイルがありませんよということでした。ちゃんとCSVファイルもダウンロードしたんですがね・・・(汗)

 

解決方法

同じフォルダにCSVファイルを入れることです。マックの場合だとネットからとったデータはダウンロードというところに保存されている場合があります。それを、実行ファイルと同じフォルダに入れてやればいいのです。

f:id:higuzeroggw:20180430144423p:plain

 

 

実行結果

まだ他の点でエラーはありますが(笑)、ちゃんと実行できています!

 

f:id:higuzeroggw:20180430144426p:plain

IT企業はみんなブラックなのか?

「IT企業はブラックだ!」

ブラック企業の代名詞IT企業。「残業が多い」「一日中パソコンをいじっている」「離職率が高いから行かないほうがいい」悪い噂の宝庫みたいなものですよね笑。そんな噂が本当なのか、就活を通して、今まで30社以上のIT企業を見た経験から語りたいと思います。

 

結論、「そんなことは無い」と思います。

ただ、もちろんブラックな企業もいます。しかし、人事、OBに取材した結果、かなり噂が一人歩きしているように思いました。今回は「残業」「仕事内容」「離職率」の3つを観点にその理由を語ります。

 

「残業」は平均して月25時間程度?!

これは、私が人事の話を聞いて、30社の中央値をとった数字です。確かに、中には40時間を優に超える企業もいました。特に下流工程の企業や立ち上げ間もないベンチャーはこの傾向があります。しかし、「元請け」「1次受け」といった上流工程の企業は残業が少ない傾向にあります。理由としては「条件のいい仕事を厳選している」「効率化に力を入れている」「下流工程に負担が回っている」などでした。

 

パソコンいじりだけのSEはもういらない

昔のSE(システムエンジニア)はPCでプログラミングだけをしていたそう。しかし最近は営業と同行して、ニーズの聞きだしも行うそうです。近年、ITの急速な発展によりソースコードを多くの人が共有できるようになりました。簡単にいうと、「これ作りたい」と思った時、それに類似するコードを利用することで楽にプログラミングができるようになったのです。0→10ではなく5→10の時代。そして浮いた時間の分で、技術者目線からの発案ができるように営業に同行して取引先の話を聞くそうです。プログラミングが楽になった分、技術者でありながら営業マンもこなせる人材が求められるでしょう。(大事なのはコミュ力ですね笑)

 

離職率が高いのはスキルが高い証拠

先日こんな話を聞きました。富士通の本社前の駅にトヨタの募集が堂々と掲げられてたそうです。自動運転などIT化が加速する社会で高いスキルを持ったSE(システムエンジニア)はどこの企業も欲しいのです。会社に入って10年程経過したら、「もっと条件のいい会社でチャレンジしよう!」と言う方も当然出て来ます。(そうならないように福利厚生や給料などの条件をよくしているそうですが・・・)どこでも通用し、広く求められるスキルが付く。SEの世界は他の業界よりも離職率が高い原因はここにあると思います。

 

最後に

「人事の話だからあてにならない」と言う方もいるでしょう。しかし、私はこの人事の言葉には高い信用性があると考えています。なぜなら、入社後の離職というリスクがあるからです。今、3人に1人が入社後3年で仕事をやめています。これは会社にとってはかなり痛手です。入社してから、高い費用を掛けて育てたのに活躍が期待される頃にやめられては元も子もありません。そのためにも入社前と後のギャップをなるべく減らす必要があるのです。人事部も嘘をついて入社させたくない。少なくとも、無責任に会社の不満を書き込める就活サイトよりはよっぽど信用性があると思います。ただ、百聞は一見にしかず、就活生の方はこのサイトを参考にしながら、ご自身の目で確認して見てください!

 

 

TOEIC勉強する必要、多分あります。 〜自然言語処理〜

「将来AIが自動翻訳してくれるから、英語勉強しなくていいや」

自分は数時間前までそう思っていました笑

しかし、「AI vs 字が読めない小学生」という本を読んで考え方が変わりました。

英語の自動翻訳にはまだまだ多くの課題があるからです。

 

1、対訳データが足りない

自動翻訳を実現するためには、AIに日本語と英語の関係性を見抜いてもらわなければいけません。

そのためには、膨大な対訳データが必要です。

現在ある、参考書や、正式な翻訳家が作った対訳のデータだけでは足りないそうです。

 

2、翻訳の安全性

グーグルでは、対訳データの不足を補うために、クラウドソーシングと言うサービスを使っています。

具体的にどう言うサービスかというと、グーグル翻訳を使って出て来た言葉。その近くにある、翻訳情報を修正すると言うボタンを押せば、利用者が正しい翻訳データを入力して、データを集める手法です。

しかし、ここにも落とし穴があります。

利用者が修正を書き加えることができると言うことは、誰でもイタズラで間違った対訳データを書き加えることができるからです。

AIはとても素直です。

間違った対訳データを、正解と思って表示してしまうでしょう。

現に、昔Googleと翻訳で検索すると放送禁止用語が出て来たそうです。(今は修正されました)

 

3、ツールとしてのコミュニケーションの壁

仮に、完璧な翻訳AIを完成させてたとしましょう。

そして、実際にそれを使って外国人とビジネスの取引を利用するシーンを想像してください。

これはあくまで自分の考えなのですが、とても話しづらいと思いませんか?

一度言ったことをデバイスが読み込んで、外国人に伝える。そして、その逆も・・・

そうすると、少なくとも2倍の時間がかかります。

また、やりにくさも感じるでしょう。

円滑なコミュニケーションを取るためにはまだ、人が英語を勉強する必要がありそうです。

 

安全性、円滑なコミュニケーション、それらを考えると、まだ実践配備の日は遠そうですね!

 

 

素早くなければ意味がない〜画像処理〜

自動運転で期待されている画像処理技術。

ここで一つ質問です。

自動車の安全性を確保するには何が重要になってくると思いますか?

認識の「精度」ともう一つ重要になってくるものがあります。

 

それは、認識の「速さ」なのです。

例えば、写真の中から1000人の群衆を見分ける装置があるとします。

これは、犯罪者を探すのにはとても役立ちますよね。

 

しかし、その判別に10秒かかるとしましょう。

これを自動運転に用いると大変なことになりますよね。

もし、歩行者が車の前に飛び出して来たら、最低でも10秒ないと止まることはできないからです。

 

つまり、自動運転には、最低限重要なもの、人を素早く認識する必要があるのです。

素早く認識できる画像処理技術にはTEDカンファレンスでも有名になったYOLOがあります。

もしよかったら、以下のサイトを見てください。

この技術を使った更なる可能性が思いつくかもしれません!

YOLOv2(Keras / TensorFlow)でディープラーニングによる画像の物体検出を行う - Qiita

実はまだまだ、AI〜農業実戦から見る課題〜

2012年、Googleが猫を識別できるAIを作りました。(詳細は以下URL)

Googleの猫認識 (Deep Learning) - 大人になってからの再学習

 

この画像から機械が判断し、識別する処理を画像処理と言います。(そのまんま)

その後、AIの画像処理技術は更なる飛躍を遂げ、現在では製造現場で不良品を識別する事にも用いられています。

NEC、機械学習で不良品を検出するシステムを製造現場向けに発売 | M2M/IoT | スマートグリッドフォーラム

 

一見、万能にも思える画像処理技術にも大きな課題があります。

それは「識別できるまでに手間がかかりすぎる」こと。

 

例えば農業。

農業では現在獣害対策として、監視カメラに写り込んだ動物がいつ、どれくらい、何が来たかというデータをとっています。

しかし、そのデータは一人一人が手作業で入力しているそうです。

「たぬき」「アライグマ」「キツネ」と。

ここで、機械学習を良くご存知の方は、「画像処理で素早くできるだろう」と思われるでしょうが現状厳しいそうです。

特にたぬきとアライグマは遠くから見ていると似ているそうで、尻尾のシマシマなどの特徴だけでは判別できないそうです。

それに、機械にたぬきとアライグマの判別をさせるには大量の画像データが必要です。

グーグルが猫の識別をするために1000万枚の画像データを用いました。

ラベル貼りという作業をすればもう少し、少ない画像数でできるそうですが、この作業はとても時間がかかります。

獣害対策にAIを用いるのはまだまだ難しそうですね。

 

 

 

「ペ○パー君、話聞いてる・・・!?」

皆さん、ペ○パーに話しかけた事はありますか?なければSiriでも良いです。

ペ○パーであれば「今日は仕事で疲れた」と言えば、「私は立って、一日中あなたを待って疲れましたよー」とかユーモラスな返しをしてくれます。(Sir○は割愛・・・)

しかし、その返しは言葉を理解して、返事をしているわけではありません。

 

AIが文字や言葉を扱う処理のことを自然言語処理と言います。

しかし、それはただ、言葉を数字で結びつけているだけです。

聞かれた言葉の中から、統計上、結びつきが大きいと判断された言葉を選んで話しているだけなのです。

結びつきの判断に使われているのはベクトルですが、その辺詳しく知りたい方は以下のブログをどうぞ。

AIは自然言語を"理解"できない? 文化系のための人工知能入門 "第7回":越境するコンピューター:オルタナティブ・ブログ

 

上述の難しい話は置いておいて、AIが言葉を理解していないと確認する方法があります。

例えばSir○に「明後日の昨日の天気は何?」と聞いてみて下さい。

今、私が試した所失敗しました。

この言葉を理解している人であれば、「明日の天気を聞いているのか・・・」とわかりますが、AIにはわかりません。

これはあくまで予測ですが、基本的には言葉との紐付けなので「明後日」「天気」「何」という単語が検出された時点で、「明後日の天気を調べよう!」と判断したのでしょう。

「昨日」という言葉は「明後日」が先に検出された以上、不要なデータとして排除されたのだと思われます。

 

AIは確かに本日的な言葉の理解をしていませんが、紐付けの精度が少しづつ上がってきているのは事実です。AIが日本と外国の言葉の壁をなくす日がくるかもしれませんね笑

AIシンギュラリティが来ない理由

2045年にはAIがAIを作り、そのAIがさらに優秀なAIを創る。機械が爆発的に発展するという話。

それがシンギュラリティ(技術的特異点)です。

その根拠は、機械の処理能力がこのままいけば頭脳を上回るからだそうです。

 

余談ですが、特異点とは数学用語です。

1/xでx=0の時、無限に発散するみたいな話ですね。(わからない人は読み飛ばして下さい笑)

 

しかし、そのような事はまずないと思います。

AIはいくつか人間の仕事を奪う事はあります。でも、全ての職を奪われるなんて事はないでしょう。

 

なぜなら、AIは単なる「数式」に従い動いているからです。

AIの元はプログラミング。

プログラミングは既にある数式をパソコンに落とし込んでいるだけ。

基本的に「数式」に表せない事は、プログラミングできません。

実際にやってみればよくわかります(笑)

もしAIがAIを創るのであれば新しい「数式」を生み出す「数式」を作らなければいけません。

仮に、機械に創造力を持たせればできるとします。しかし、人間が持つ創造力、「突然ふとしたことからアイデアが生まれる」などどのように数式で表すのでしょうか?

 

ただ、AI技術はかなり発展しています。

つまりAIでできる事は今後かなり増えていくでしょう。

そうなった時に大事なのは「それらを使ってどうしたいか?」「何をしたいか?」です。

大事な所を考えるのは最後まで人間です。