- 1. ズンドコキヨシが停止するまでの平均ズンドコ回数について
- 2. 独立成分分析の実装
- 3. Enter無し一文字入力しようとすると文字が消えてまう現象
- 4. AtCoder Beginner Contest 167 参戦記
- 5. 【Python】素人が機械学習を始めるにあたって
- 6. Nuxt&Django REST Framework構築マニュアル GET編①
- 7. なぜpythonでimportするとモジュールが使えるのか
- 8. 【グラフ描画】複数系列の棒グラフをmatplotlibとseabornで書いてみた
- 9. 【初心者向け】回帰モデルの自前データで止まっている人向け(statsmodels(第2回目))
- 10. ヤコビアン、多項分布
- 11. Pythonのウェブプログラミング記事まとめ
- 12. pythonでプログラミング言語を作った
- 13. matplotlibにおいて確率密度関数とヒストグラムを重ねて描写する際の注意点
- 14. 速度計測に便利なjupyterのマジックコマンド%timeitみたいなやつをPythonで自前実装
- 15. Ubuntu20.04でのshebang
- 16. ゼロから始めるLeetCode Day21 「448. Find All Numbers Disappeared in an Array」
- 17. Kaggle COVID19 Global Forecasting (Week 5)
- 18. LightGBM Tunerを用いたハイパーパラメーターのチューニング
- 19. プログラミングチャレンジブックをpython3で解いてみる
- 20. Scikit-LearnとTensorFlowによる実践機械学習
ズンドコキヨシが停止するまでの平均ズンドコ回数について
#概要
ズンドコキヨシにおいて、平均何回ズンまたはドコをプリントしたら「キ・ヨ・シ!」に到るかについて、初等的な算出法が見当たらなかったので今更ながら記事にしました。高校数学までの範囲で理解できる内容になっていると思います。
どういうプログラムだったか最早忘れたという方はズンドコキヨシまとめをご参照ください。
Javaの講義、試験が「自作関数を作り記述しなさい」って問題だったから
「ズン」「ドコ」のいずれかをランダムで出力し続けて「ズン」「ズン」「ズン」「ズン」「ドコ」の配列が出たら「キ・ヨ・シ!」って出力した後終了って関数作ったら満点で単位貰ってた— てくも (@kumiromilk) 独立成分分析の実装
独立成分分析とは、ブラインド信号源分離に用いられる。これは、2つの異なる音が混合した音から、2種類の音を判別するものである。
今回は、その手法の一つの射影追跡を用いて実装する。
射影追跡とは、2つの要素からより非ガウスの部分を抽出することである。これは、中心極限定理より、最も独立した音を抽出することと、非ガウスを見つけることは、等しい。仮定として、まず音を聞き取る装置は2つあるものとする。音の大きさやその順序は問わない。
#モチベーション
課題#アルゴリズム
射影追跡
ニュートン近似法#乱数生成
“`
import numpy as np
from scipy.linalg import sqrtm
import math
import matplotlib.pyplot as pltdef generate_data(n=1000):
global M, b
x = np.concatenate([np.random.rand(n, 1), np.random.randn(n, 1)], axis=1)
x[0, 1] = 6 #Enter無し一文字入力しようとすると文字が消えてまう現象
#一文字入力をしてみたい
input()関数はエンターキーを打たないと読み込んでくれないんです。
エンターキーを押すのを省きたいんですね。
ということでエンターキーを打つのを省く手段を検索しました。“`python
def getch():
import sys
import tty
import termios
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
try:
tty.setraw(fd)
return sys.stdin.read(1)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
“`
macの場合これでできるらしい
参考元:https://torina.top/detail/428/##実行
“`python
while True:
print(‘入力:’,end=”)
key = getch()
AtCoder Beginner Contest 167 参戦記
# AtCoder Beginner Contest 167 参戦記
700番台とか初めてなのでイヤッッホォォォオオォオウ!!
## [ABC167A – Registration](https://atcoder.jp/contests/abc167/tasks/abc167_a)
2分で突破. 書くだけ.
“`python
S = input()
T = input()if len(S) + 1 == len(T) and S == T[:-1]:
print(‘Yes’)
else:
print(‘No’)
“`## [ABC167B – Easy Linear Programming](https://atcoder.jp/contests/abc167/tasks/abc167_b)
3分半で突破. `sum(([0] * A + [1] * B + [-1] * C)[:K])` って書いている途中で K≤2×109 に気づいた. なんという時間の無駄.
“`python
A, B, C, K = map(in
【Python】素人が機械学習を始めるにあたって
#はじめに
この記事はプログラミング初心者の筆者が機械学習をすすめる上で、参考になったことを備忘録がてら記すものです。素人目線で参考になった情報などを記載していきます。
#機械学習のために参考になったサイトの紹介
何かとトレンドの機械学習を私も試してみたくなり、いちから挑戦しています。
###機械学習とはなんぞや
まず機械学習とは何かを簡単に学べるサービスの紹介です。
####其の一、aidemy
無料の会員登録が必要だが、動画で機械学習の入門を学べます。
無料のコンテンツはそこまで多くないが、まず概要をサクッとさらいたい人はよいかも。
Pythonの初心者コースもあるので、プログラムを触ったことがない人でもとっつきやすいかも。
>https://aidemy.net/####其の二、codexa
>https://www.codexa.net/
同じく無料の会員登録が必要だが、こちらは線形代数や統計など機械学習に必須となる部分も無料で学べます。
(めちゃくちゃ助かりました)#実際に手を動かすにあたって行ったこと
inputを上から行い、次はoutputというこ
Nuxt&Django REST Framework構築マニュアル GET編①
# 概要
フロント:Nuxt
バックエンド:Django REST Framework(以下DRF)
で新しいプロジェクトなどを立ち上げた時に設定などをいちいち調べるのがめんどくさくなったため、まとめておきます。ただ、設定ファイルだけを書くのでは個人的に記事として物足りない。
なので、ついでに基本的な操作であるAPIを叩いてデータを取得、そしてデータをPOSTするところまで書く予定です。
なお、今回はDBはSQLiteを使います。PostgreSQLやMySQLなど他のRDBが使いたい場合はDRF側のDBの設定を書きかえるだけなので、そちらの設定は各自よろしくお願いいたします。ひとまずこの記事では、プロジェクトを作り、NuxtからDRFで作ったAPIを叩いてデータベースの一覧をGETするところまでです。
ソースコードは[こちら](https://github.com/Kuehar/nuxt-django)にあるのでわからないところは適宜見てください。
また、[Twitter](https://twitter.com/kueharx)かこの記事のコメント欄でわからないとこ
なぜpythonでimportするとモジュールが使えるのか
ちょっと気になっていて調べたらなるほどとなったのでメモ
皆さん何気なく使っているimport文。
pipでインストールしたモジュールを使うために、pythonを勉強し始めたときに、きっと誰もが一度は使ったと思います。“`
import os
import math
import cv2
…
“`## 自分で書いたクラス、関数を呼び出したい
ある程度、pythonが書けるようになってくると、自分で書いたコードを分割したりして、管理したいと思うはずです。
例えば、util_func.pyという関数をたくさん定義したファイルを作っておいて、ほかのスクリプトでも使えるようにするみたいな感じです。その時に、何の考えもなしに
“`
from util_func import f1
“`
みたいな感じに書くと、Module not foundというエラーが出たこと、皆さんありませんか?そこで調べてみると、以下の様なコードを挿入すると大丈夫らしい。
“`
sys.path.append(os.pardir) #ファイル構成にもよりますが。。。
“`実際にやっ
【グラフ描画】複数系列の棒グラフをmatplotlibとseabornで書いてみた
# はじめに
複数系列の棒グラフの描画をmatplotlibとseabornで比較してみました。結論から言うと、**seabornは便利ですね**という記事です
– 環境
– Windows-10-10.0.18362-SP0
– Python 3.7.6
– pip 19.3.1
– pandas 1.0.3
– matplotlib 3.1.2
– seaborn 0.10.0
– numpy 1.18.1# 描画するグラフ
左側がmatplotlib,右側がseabornです。グラフだけ見ると同じですが、これらを描画するまでがseabornは楽です。
棒の色は同じ色を指定していますが、seabornのほうがちょっと淡いですね。こういうのももしかしたら設定がどこかにあるんでしょうか・・・
![グラフを描画してみた.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635079/5370f02a-0aaa-8cc1-aac2-00aadf693da4.png)
【初心者向け】回帰モデルの自前データで止まっている人向け(statsmodels(第2回目))
### 【初心者向け】回帰モデルの自前データで止まっている人向け(statsmodels(第2回目))
ほぼ、備忘録**サンプルデータで止まっている人向け、statsmodels(OLS)入門**
statsmodelsで回帰のサンプルをやってみて、自分で作ったデータで止まっている人向けの入門記事です。
このスクリプトで想定しているケースは、架空の飲食店(バーやスカイラウンジーの想定)で、商品の大分類や客単価、来店人数等が記録された架空の売上データがあったとして、売上が多い日には何か傾向があるのだろうか?という設定です。
***
【環境】
Linux: debian10.3
python: 3.7.3
pandas: 1.0.3
statsmodels: 0.11.1
jupyter-lab: 2.1.0以下の様な、csvファイルがあったとして
Date,earnings,customer,earnings_customer,fortified_sweet,rum,brown_spirits,mojito_rebji
ヤコビアン、多項分布
# はじめに
久保川達也氏著「現代数理統計学の基礎」の4章を勉強していて、私が個人的に気になったところである
・ヤコビアン
・多項分布
について説明します。# ヤコビアン
$ $
ヤコビアンは、変数変換をして(異なる座標系を考えて)積分するときに出てくることが多いです。例えば2次元極座標系から直交座標系に座標系を変換する場合、極座標系での微小面積は$rdrd\theta$と近似できて、直交座標系での微小面積は$dxdy$で、$$\iint f(x,y) dxdy=\iint f(r,\theta) rdrd\theta$$とし、3重積分の場合は$$\iiint f(x,y,z) dxdydz=\iiint f(r,\theta,\phi) r^2\sin \theta drd\theta d\phi$$として計算すると思います。実はこのときの$r$や$r^2\sin \theta$がヤコビアンというものです。私はヤコビ行列式をヤコビアンと呼んでいて、それは
$$|J|=|\frac{\partial (x,y,z)}{\partial (r,\theta,\phi)}|$$と
Pythonのウェブプログラミング記事まとめ
# はじめに
私がQiitaに投稿したPythonのウェブプログラミングに関連する記事のまとめです。
今後もPythonのウェブプログラミングに関する記事を追加していくごとに、こちらのまとめも更新していきます。# Flask
– [初期設定](https://qiita.com/yukiya285/items/024ce8acefeea55374e2)
– [データベース](https://qiita.com/yukiya285/items/b8857c3fee1657973c89)
– [アプリケーション](https://qiita.com/yukiya285/items/7ddcea565b04bce06f3b)
– [HTMLテンプレート](https://qiita.com/yukiya285/items/e2aa24be36fbe680c76f)# Django
– [初期設定](https://qiita.com/yukiya285/items/90f1c0d0982b94edb4c5)
– [モデル](https://qiita.com/yukiya2
pythonでプログラミング言語を作った
この記事で作るのは自作プログラミング言語というより**似非自作プログラミング言語**です。理由は後述。
# なぜ作ったのか
暇だからです。# 難しい?
簡単です。200行弱でかけます。# 何ができるの?
変数への代入とPrint, Inputしかできません。それ以上は自分で作ってみよう()# なぜ似非?
ソースを見てもらえばわかると思うんですけど、これifとかでむりやり読み込んで実行してるだけで、構文解析?も何もしてないからです。# 言語仕様
なまえはtslです。なんとなくです。
変数宣言はkotlinの`val`と`var`をパクってます。
コメントは//です。~~行の途中からコメントにするとかできません。~~**対応しました**
kotlinのsyntax適用してるので色ついてます。“`kotlin
// 変数宣言
// イミュータブル
Val String str is “This is string” // This is String
// ミュータブル
Var String s is “This is string”
Print t
matplotlibにおいて確率密度関数とヒストグラムを重ねて描写する際の注意点
ヒストグラムと確率密度関数を重ねて描写したいと思ったときに最初きれいに重ねることができなかったのでそのときの解決策をメモとして残す。
#原因
numpy.randomで生成される乱数は生成数によっては面積が1よりも大きくなってしまうこと。
#解決策
– ヒストグラムを標準化
– 確率密度関数の面積をヒストグラムに合わせる###ヒストグラムを標準化
“`python
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm
n = 2000 #データ数data = np.random.randn(n)
plt.hist(data, range=(-3, 3), bins=60, alpha=0.5, density=True)
#階級幅0.1 総データ数2000, 縦軸を相対度数密度としたヒストグラム
x = np.linspace(-3, 3, 61)
#0.1刻みの数列を生成
plt.plot(x, norm.pdf(x), c=’r’)
“`縦軸を度数ではなく相対度
速度計測に便利なjupyterのマジックコマンド%timeitみたいなやつをPythonで自前実装
# やること
jupyterの%timeitみたいなやつを実装します。
これの返り値を変数として使いたい。“`py:ipynb
%timeit -n 10 -r 100 test()
“`
`-n`、 `-r` 以外にもオプションがありますが、今回はこの2つ以外実装しません。# そもそも `%timeit -n 10 -r 100 test()` って何やってんの?
1. test()を100回繰り返し、その中で一番実行速度の早かった値を返す。
2. 1を10回繰り返し、平均をとる。つまり、**最速の10個の平均値**を出しています。
# 標準ライブラリのtimeitじゃダメなの?
> 1. test()を100回繰り返し、その中で一番実行速度の早かった値を返す。
↑ これをやるメソッドがなさそう?
ひとまず勉強も兼ねて自前で実装してみます。https://docs.python.org/ja/3/library/timeit.html
# ディレクトリ構成
“`sh
.
├── utils
│ ├── speed_test.p
Ubuntu20.04でのshebang
# Ubuntu20.04でのPython
Ubuntu 20.04が出ました。
早速~~遊んで~~調査してみたところ、標準インストールではPython3.8が入るようです。
ですが、pythonじゃ起動しません、python3で起動します。[^1]
普通は困らないのですが、shebang[^2]の機能を使って実行ファイルとして起動させたいときはちょっと困ります。
さて、どうしよう?と言うことで少し調べてみました。
# shebangの書き方例
いろいろと検索してみたら、[Perl, Python 及び Ruby スクリプトにおける正しいshebangの書き方](https://qiita.com/tueda/items/369215b99316b2e9f3d8)てのがありました。
/bin/shを起動してexecでpythonを起動させる方法[^3]みたいです。[^4]
これをちょっといじってみました。“`python
\#!/bin/sh
“””:” .if [ -x python ] ; then
exec python “$0″ ${1+”$@”}
else
ゼロから始めるLeetCode Day21 「448. Find All Numbers Disappeared in an Array」
#概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。その対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイト。
せっかくだし人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetCode Day20 「134. Gas Station」](https://qiita.com/KueharX/items/7bc4792c940e722ca7eb)基本的にeasyのacceptanceが高い順から解いていこうかと思います。
[T
Kaggle COVID19 Global Forecasting (Week 5)
次のコンペに投稿したものです。
>[COVID19 Global Forecasting (Week 5)](https://www.kaggle.com/c/covid19-global-forecasting-week-5/notebooks)“`py:covid19_starter_code.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# covid19_starter_code.py
#
# May/10/2020 AM 07:20
#
# copied and edited from “Starter Code”
#
# train.csv
# 104 days
# 3463 keys
#
# test.csv
# 45 days
# 3463 keys
#
# ——————————————————————
import numpy as np
import pandas as pd
import os
imp
LightGBM Tunerを用いたハイパーパラメーターのチューニング
## はじめに
前回、kaggleをやった時のデータを用いて、optunaのハイパーパラメータのチューニングを試してみたいと思います。
データに関しては[前回記事](https://qiita.com/askl4267/items/53f1f2e1808bd60f36af)に記載してあります。[optuna](https://preferred.jp/ja/projects/optuna/)はPreferred Networksが開発したもので、ハイパーパラメーターを自動でチューニングしてくれるものです。
特に、LightGBMのチューニングに関しては、グリッドサーチの掛け算的な探索に対して、足し算的に探索をしてくれます。
どういう事かと言うと、例えば、n_estimators=[50, 100, 150]、mad_depth=[10, 15, 20]で
最適なパラメータを探索するとします。
グリッドサーチなら3×3で9回の試行を繰り返します。それに対し、optunaのLightGBM tunerでは3+3の6回の試行を繰り返します。
試行回数が少ない代わりに、optunaは、精度
プログラミングチャレンジブックをpython3で解いてみる
#初めに
プログラミングを始めて数か月だが、atcoderを解くうえで必要な知識が圧倒的に足りないことを思い知り、プログラミングチャレンジブック(通称:蟻本)を解いてみようと思った。kaggleなどデータ分析にも興味があることもありpythonで解いていこうと思う。##1-6 三角形
“`python
n = 4
a = {4,5,10,20}
a = sorted(list(a))
ans = []for i in range(n-2):
for j in range(i+1,n-1):
for k in range(j+1,n):
if a[k] < a[i]+a[j]: ans.append([a[i],a[j],a[k]]) if ans==[]: print(0) else: ans2 = [] for i in range(len(ans)): ans2.append(sum(ans[i])) print(max(ans2)) ```
Scikit-LearnとTensorFlowによる実践機械学習
データ分析時のツールとして、今まではずっとRを使ってきました。
MATLABも卒業研究では使っていましたが、仕事では使っていないので、もう1年は触っていません(MATLABは結構好きなんですけどね)。
これは単純に大学で使っていた(教わった)ツールがRやMATLABだった(statworksも使ったことはある)というのと、私の仕事がどちらかというとシステム実装ではなく、意思決定のためのデータ分析が多かったというのが理由です。大学では機械学習を勉強していましたが、仕事で機械学習を使ったのは片手で数えるほどしかなく、早い話が「単純に今までPythonを必要とする場面がなかった。」というわけです。
しかし、時代は機械学習全盛。そしてPythonには機械学習を使うのに便利なツールがたくさん揃っています。Rだけでも十分やっていけるとは思いますが、使えるものが多いに越したことはありません。特に、調べているとscikit-learnとTensorFlowはめちゃくちゃ便利そうだなと感じていました。
というわけで書籍を購入。
#書籍:scikit-learnとTensorFlowによる実践