LoginSignup
3
1

More than 3 years have passed since last update.

機械学習手法とその実装言語をQiitaのタグ情報から考察してみた

Posted at

初めに

初めての投稿。

大学時代、SVM(サポートベクターマシン)で旅行サイトのレビューのポジネガを判別するプログラムを作っていました。
当時はPythonを使っていましたが、他の機械学習手法だと違う言語が多いのかな?今はPython以外が人気なのかな?とか思ったので、Qiitaのタグ情報を集めることで考察してみました。

まずは、機械学習手法(SVM,Logistic regressionなど)がタグ付けられている記事をAPIで100件抜き出して、その記事の他のタグを見ることで、どの言語で作られているか確認します。
(言語も一緒にタグ付けするやろ、のノリです。)

QiitaAPIの練習なので、正しいかどうかは問題ではないですね。
ちなみに検索名は↓です。

手法 検索名
線形回帰 Linearregression
ロジスティック回帰 Logisticregression
サポートベクターマシン SVM
決定木 decisiontree
ランダムフォレスト randomforest
ニューラルネットワーク NeuralNetwork
ナイーブベイズ NaiveBayes
k-means k-means
主成分分析 PCA
ディープラーニング DeepLearning

コード

QiitaAPItest.js
// axiosモジュールを読み込む
const axios = require('axios');

//MLName:機械学習手法
//MLSearchName:検索する名称
//MLSearchNameをタグ付けしている記事100件からタグを取得し、[タグ名:数]のリストで返します。
async function taglist(MLName, MLSearchName) {
  var rtList={};
  let response = await axios.get('https://qiita.com/api/v2/items?per_page=100&page=1&query=tag:'+MLSearchName);
  for (let i = 0; i < response.data.length; i++) {
    for (let j = 0; j < response.data[i].tags.length; j++) {
      if(rtList[response.data[i].tags[j].name]){
        rtList[response.data[i].tags[j].name] +=1;
      }
      else{
        rtList[response.data[i].tags[j].name] =1;
      }
    }
  }

  //降順にソート
  var keys=[];
  for(var key in rtList)keys.push(key);
  function Compare(a,b){
    return rtList[b]-rtList[a];    
  }
  keys.sort(Compare);

  console.log('\n' + MLName);

  //上位5件表示
  for(let i = 0; i < 6; i++){   
    console.log(keys[i] + ':' + rtList[keys[i]]);
  }
}

taglist('線形回帰','Linearregression');
taglist('ロジスティック回帰','Logisticregression');
taglist('サポートベクターマシン','svm');
taglist('決定木','decisiontree');
taglist('ランダムフォレスト','randomforest');
taglist('ニューラルネットワーク','NeuralNetwork');
taglist('ナイーブベイズ','NaiveBayes');
taglist('k-means','k-means');
taglist('主成分分析','PCA');
taglist('ディープラーニング','DeepLearning');

結果・考察

抽出したタグで、数が多い順に5個

手法 タグ1 タグ2 タグ3 タグ4 タグ5
線形回帰 MachineLearning Python 機械学習 memo coursera
ロジスティック回帰 Python MachineLearning scikit-learn classification Marketing
サポートベクターマシン 機械学習 Python scikit-learn MachineLearning 機械学習入門
決定木 Python MachineLearning 機械学習 決定木 randomForest
ランダムフォレスト Python 機械学習 MachineLearning scikit-learn Kaggle
ニューラルネットワーク DeepLearning Python 機械学習 AI MachineLearning
ナイーブベイズ Python MachineLearning 機械学習 scikit-learn svm
k-means Python 機械学習 クラスタリング scikit-learn MachineLearning
主成分分析 Python 機械学習 主成分分析 Python3 K-means:6
ディープラーニング Python 機械学習 PyTorch TensorFlow Keras

全部Python!
Rとかも出てくるかなと思ってましたが、やはりPythonが人気のようです。
Python楽ですよね。CとかJavaとか学んだ後にPython使ったら楽すぎて震えましたね。
Pythonが人気な理由もググってみました。

Pythonの長所と短所についての考察

Qiita以外のリンク貼っていいのか迷ったので、貼っていません。
「Python 人気 理由」とかでググればたくさん出てきますね。

まとめると
・コードが書きやすい
・利用できるプラットフォームが多い
・ライブラリが豊富

が理由のようです。

機械学習では特に、ライブラリが多いのが選ばれる理由でしょうか。
ただ、機械学習は学習の過程でどうしても処理が大きくなってしまいます。
その点Pythonはインタプリタ型なので、唸れマシンパワーというところですかね。
コンパイル型でも一緒か。

私は1日かけて学習させた後にクソみたいなコードミスでエラーになったことが多々あります。
インタプリタ型が悪いのではないです。悪いのは私です。

あとがき

APIの記事の検索方法に課題が残っています。
・スペースも込みで検索できない(例:Deep Learning)
・日本語で検索できない
QiitaAPIのhttps://qiita.com/api/v2/items?per_page=100&page=1&query=tag:
以降の記述方法を、もう少し勉強する必要があります。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1