ネコでもつくれる人工知能

日記です。1日やったことを書いていきます。内容はそんなにレベルが高くないものになると思います。

【python3】可変長の配列を半分にする

ndarrayはnumpy.split()でいけるけど普通のリストは組み込み関数がないから自分で書くしかない。

li = [i for i in range(8)]
harf_li = list((li[:int(len(li)/2)],li[int(len(li)/2):]))
print(harf_li) #[[0, 1, 2, 3], [4, 5, 6, 7]]

ちなこれだと奇数の時は後者が膨れる。
後者のスライスに+1すると奇数でも同じ長さになる。ただ真ん中の数は消える

2018/4月の思い出

上旬

シャムの人工知能をLINEに移植する
知らない単語と文章を蓄えるDBをawsつかって設置
大学院入学式に参加

中旬

やっと研究方針が決まる
機械学習のお勉強をがっつり再開する
自然言語ばっかやってたので本業の画像処理に戻る

下旬

やってる事業が拡大する
研究の進捗がやっとでる
自然言語処理を趣味でやってたのが研究にも活きてきてやっててよかったな〜と感じる

おしまい
我ながら情報工学が生活の大半を占めていてつまらん人間だなと感じる

【日本人版】顔面偏差値測定アプリ

概要

グローバルなものはすでにあるが偏差値として表示されるのではなく各国で顔の造形は異なるので日本版でちゃんと偏差値として出力されるものがあれば需要があるのでは?
車輪の再発明大歓迎や!

  1. facebookapiや以前作った顔面を大量に集めるツール(githubにあります。欲しい方は自由に使ってください。)で顔画像を大量収集
  2. 手作業or機械学習で顔面偏差値(主観)をラベル付け
  3. ニューラルネットワークのチカラを借りて偏差値ごとのモデル生成
  4. webアプリかなんかで画像をインプットできるGUIを作る
  5. インプットされた画像をモデルを元に顔面偏差値を出力

つまんないかな?

【python】2進数→10進数と10進数→2進数

1日10分でできるアタマの体操😃

2進数→10進数

特に言うことなし
強いて挙げるとすれば2進をリスト化した時にひっくり返さんといけないことぐらいか

def calc_base2(base2_list):
    base2_list = reversed(base2_list) #ひっくり返さんとイカン
    base10 = 0
    index = 1
    for num in base2_list:
        if num == 1:
            base10 += index
        index *= 2

    return base10


# if __name__ == '__main__':
#     base2 = input()
#     try:
#         base2_list = list(map(int, list(base2)))
#     except:
#         print('please input only integer.')
#         exit(0)
#     print(calc_base2(base2_list))

10進数→2進数

こっちはちとわかりづらい
ビット(0か1)を算出してリストに突っ込む

割る2したあとintでくるんで余り切り捨て

1以下になったら終了

def calc_base10(base10):
    base2_list = []
    while(base10 >= 1):
        bit = base10 % 2
        base2_list.append(bit)
        base10 /= 2
        base10 = int(base10)
    base2 = ''.join(map(str,reversed(base2_list)))

    return base2


# if __name__ == '__main__':
#     base10 = int(input())
#     print(calc_base10(base10))

2018/3月の思い出

上旬

まだ寒い
syamuのチャットボットを作り始める
研究室で勉強するか仕事するか休んでゴロゴロするかの日々
一生こうして暮らしたいなぁ…

中旬

寒くなくなって来た
syamuのチャットボットにword2vecで世界観から言葉を紡ぐ機能を搭載した
インフルエンザで卒業式に行けず
macbookぷろを購入したので金がなくなる

下旬

やっているプログラミング塾での生徒の発表会があった
俺もあれ位の頃から情報工学を学んでいたらなぁ…😷
kerasの勉強をして簡単なCNNくらいなら組んでぶん回せるようになった
syamuのチャットボットに極性辞書を用いた感情機能を搭載した
2人もforkしてる酔狂な方がいるのでissueを書いたりcommit時のコメントをしっかりするようにし始めた
自然言語処理(と呼ぶのはおこがましいかもしれないが)楽しい

【機械学習】長いループのお供に 進行状況を表示するtqdmのインストール

こんにちは😊

機械学習には何万回といったループによる処理が必要不可欠です。普通のcpuのマシンで学習させると平気で何十時間もかかったりしちゃいます。

どこまで進んだかわからなくなりif文で1000回に1回くらい表示するプログラム入れたりしちゃいますよね。俺もよくやります。 勿論それでも良いのですがさらにわかりやすくするのにオススメのものがtqdmというパッケージです。

このパッケージは進行状況をゲージを用いて表示してくれます。情報量が多くて安心しますね😊 f:id:pppparfait:20170906005837p:plain

今回の記事はそんなtqdmをanacondaでインストールする方法を解説しているところが無かったのでメモ代わりに書いています。

tqdmはcondaでは提供されていないためAnaconda Cloudを用いてインストールする必要があります。 Anaconda Cloudとは個人(または団体)が好きなパッケージを詰め合わせて作ったリポジトリです。anacondaの公式側がサービスを提供しています。

$ conda install -c [リポジトリ名] [パッケージ名]

でインストールできます😘 tqdmの入ったリポジトリはたくさんありますが今回は超有名なconda-forgeにします。

$ conda install -c conda-forge tqdm

これで終わりです!楽ちん! forgeって鍛治場って意味なんですね〜 知らなかった!

終わったら以下のコードをコピペ&実行してtqdmの威力を確認してください。

from time import sleep
from tqdm import tqdm

if __name__ == '__main__':
    for i in tqdm(range(5)):
        sleep(1)

使い方はクソ簡単でイテレータ(上のコードではrange(5))をtqdm()でくくるだけです。 trange()でもいけるらしい。

良い学習ライフを😊

【bms】LR2 譜面別上位プレーヤー100名の情報を取得しcsvファイルとして保存

生まれて初めてスクレイピングした時に作ったものです

pythonで実行しましょう

import csv
import urllib.request
from bs4 import BeautifulSoup

try:
    soup = BeautifulSoup(urllib.request.urlopen('http://www.dream-pro.info/~lavalse/LR2IR/search.cgi?mode=ranking&bmsid=545'), "lxml")
except:
    print("エラー urlが開けません")
else:
    print("urlの取得に成功しました")

title = soup.find("h1").string
table = soup.find_all("table")[3]
rows = table.find_all("tr")

try:
    csvfile = open("items/"+ title +".csv", "wt", newline='', encoding='utf-8')
    writer = csv.writer(csvfile)

    for row in rows:
        csvrow = []
        for cell in row.find_all(['td','th']):
            csvrow.append(cell.get_text())
        writer.writerow(csvrow)

except (FileNotFoundError, TypeError):
    print("エラー ファイルが不明です")
else:
    print("ランキングリストの作成に成功しました")
finally:
    csvfile.close()

動きとしては非常に単純です

  1. 取得したい譜面のirにアクセス

  2. テーブルからプレーヤーデータ等を引っこ抜く

  3. そのままcsvに纏める

  4. csvを閉じて終わり