Python関連のことを調べてみた2021年01月06日

Python関連のことを調べてみた2021年01月06日

機械学習における競馬予測

#はじめに

みなさんは競馬をしたことがありますか?
私は機械学習を勉強して初めて、競馬に触れました。
プログラミングを勉強する上で「手を動かしながら学ぶ」というのがあります。私は、勉強するなら楽しく、ビジネスに貢献できる題材がいいと思いました。
そこで色々調べた結果、特徴量(予測する際に使う要素)が多く、ビジネスに関係のある競馬を選びました。
最初は「馬が速いか遅いかなんて馬にしか分からないでしょ。」と思っていましたが、機械学習を使うことである程度は予測できるということを知って、今回の記事を書きました。
初めての記事なので、分かりにくい部分が多々あるかと思いますが、その際はご指摘いただけると幸いです。
#行ったこと
競馬データを分析し、予測精度(AUC)を出すところまで行いました。本当は実際に予測した後に、回収率などを出せるともっと面白そうですが、そこまでの技術はないので「データの取得→前処理→学習→AUCの算出→考察」まで行いました。
#環境
Google Colab(初めはローカルのJupyter labで行っていましたが、私のPCでは学習時にkernelが落ちてしまうため、Go

元記事を表示

PythonでKubernetesPodのCPU使用量を表示させる方法

PythonによるPodのCPU使用量を表示させるプログラム

“`python

from kubernetes import client, config
import json

config.load_kube_config()
api = client.CustomObjectsApi()
resource = api.list_namespaced_custom_object(group=”metrics.k8s.io”,version=”v1beta1″, namespace=”c0118220″, plural=”pods”)

#print(json.dumps(resource,ensure_ascii=False, indent=4, sort_keys=True, separators=(‘,’, ‘: ‘)))
for pod in resource[“items”]:
print(pod[“metadata”][“name”],pod[‘containers’])
~

元記事を表示

【注意】mecabでシステム辞書やユーザー辞書を指定する【Windows】

MeCabをpythonで利用していて辞書指定で引っかかったことがあったので備忘録として残しておく。
1つの処理の間でユーザ辞書を切り替える必要があったことが背景になっている。

(まあ、mecabで引っかかったというよりpythonでのパス指定で引っかかっていたのですが。)

mecabの公式ページは以下。
https://taku910.github.io/mecab/
大体のことはここに書いてあるが、懇切丁寧に書いてあるわけではないので別途調べる必要がある。
mecabはWindowsを前提に作られているわけではなく、調べて出てくるドキュメントもWindows向けのものが少なかった印象。

# 結論
パスは`¥`や`\`で区切らずにせずに`/`で区切れ
**辞書へのパス指定時にスペースを入れるな**

# 解説
ここではpythonコードから辞書指定をするときについて解説する。

ちなみにコマンドラインから実行する場合はスペースがあっても問題ない。
ただ、スペースで区切りとみなされるためパス全体を`””`で覆うこと

“`
# システム辞書指定
mecab -d “C:\Pro

元記事を表示

Opencvについて③

Opencv3系についてのメモ

基本的には公式ドキュメントを確認しながらの物。

メモについて
[Opencvについて①](https://qiita.com/bobrock/items/d410db7ac71908eb2ecf)
[Opencvについて②](https://qiita.com/bobrock/items/40f442bd2d67df7b0aa9)

環境・使用画像は前回と同様。


###①リサイズ

cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]]])
cv2.resize(第1引数、第2引数、第3引数)のイメージ

自分が使用している画像の通常時

“`python:opencv.py
#通常画像
img = cv2,imread(cap_dir)
img.shape
>>>(340,255,3)
“`

Opencvチュートリアルとしては

“`python:opencv公式.py
import cv2
import numpy as np

img = cv2.imread(cap_

元記事を表示

クラスター分析手法のひとつ k-means を scikit-learn で実行したり scikit-learn を使わず実装したりする

クラスターを生成する代表的手法としてk-meansがあります。これについては過去にも記事を書きましたが、今回は皆さんの勉強用に、 scikit-learnを使う方法と、使わない方法を併記したいと思います。

* K-meansクラスタリング(過去記事)
* https://qiita.com/maskot1977/items/34158d044711231c4292

# データの取得

機械学習の勉強用データとしてよく使われるあやめのデータを用います。

“`Python
import urllib.request

url = “https://raw.githubusercontent.com/maskot1977/ipython_notebook/master/toydata/iris.txt”

filename = url.split(“/”)[-1]
urllib.request.urlretrieve(url, filename)
“`

(‘iris.txt’,

元記事を表示

tensorflow-gpuを動くようにするためにすること

#初めに
パソコンを初期化したらtensorflowをgpuで動かすために色々入れなおさなきゃいけなかった。
そしたらいろいろ躓いたので、今後また入れなおすようにメモ

#環境
windows10
RTX2070
Ryzen 3700x
Anaconda

#道筋
Anacondaのダウンロード
環境の作成
tensorflowの依存環境の把握
cudaのダウンロード
cuDNNのダウンロード
パス

#バージョン
2019年にtensorflowが1.xから2.xになって書き方が結構変わったみたい
よってネット上に結構あるプログラムが動かないのでないっぽい
よって環境を二つ作って、一つは2.xの最新版、もう一つは1.xの最新版を入れる

#2.x

Python3.7
tensorflow-gpu==2.4.0
cudnn8.0.5
cuda11.0
keras-2.4.3

##環境作成

https://qiita.com/ozaki_physics/items/985188feb92570e5b82d
に環境の作り方がある。

“`
Conda create -n 37

元記事を表示

Jupyter notebook の結果を Qiita に上げるために markdown にする

Google colaboratory を使っていて、できあがった Jupyter notebook のファイル(.ipynb) を Qiita にアップしたいとき markdown に変換するのですが、これをコマンドラインで行ないたいと思ってもすぐには思い出せない。かといってググってもすぐには見つからないのでメモします。

“`Python
jupyter nbconvert –to markdown Untitled.ipynb
“`

以上ッ!

元記事を表示

python chromedriver自動更新

pythonで簡易RPAを実施しているのでけれど、
chromedriverを手動で更新していたがめんどくささが限界に。。

重い腰を上げ調べてところ下記の記事が役に立ちました。

https://yuki.world/python-selenium-chromedriver-auto-update/

###1.pipでweb_drivermanagerをインストール

pip install webdriver_manager –proxy=proxy.hoge.com:8080

※うちはproxy環境なのでproxyオプションつけています。通常不要。

###2.pythonファイルに参照import

from webdriver_manager.chrome import ChromeDriverManager

###3.pythonファイルのdriver初期化をちょこっと変更

driver = webdriver.Chrome(ChromeDriverManager().install())

自動化された。。すばらしい。

以上
 

元記事を表示

Pandasで「ImportError: Install xlrd >= 0.9.0 for Excel support」エラー。 openpyxlを使うように変更して解決

『Python実践データ100本ノック』のサンプルで、エクセルファイルを読み込むコードを試していたら、以下エラー発生。

“`python
ImportError: Install xlrd >= 0.9.0 for Excel support
“`

## 解決方法

### openpyxlをインストール

“`python
pip install openpyxl
“`

### pandasのread_excel()のパラメータにengineを指定

“`python
# 修正前
# kokyaku_data = pd.read_excel(“kokyaku_daicho.xlsx”)

# 修正後
kokyaku_data = pd.read_excel(“kokyaku_daicho.xlsx”, engine=”openpyxl”)
“`

Pandasのデフォルトのengineがxlrdだけど、最近xlsxファイル非対応になってしまったため、engineをopenpyxlに切り替えてあげることでエラー回避できました。

xlrdのほうもそのうち修正されるだ

元記事を表示

Serverless FrameworkとAWS Lambda with Pythonの環境にpipインストール

pipインストールが必要なAWS LambdaのPythonスクリプトをServerless Frameworkでデプロイする方法です。

gemインストールが必要なAWS LambdaのRubyスクリプトについては[前回](https://qiita.com/suzuki-navi/items/1369b11a8f5d7f467645)の記事で書きました。

# 手順概要

プラグインを入れれば簡単にできます。

1. `serverless plugin install -n serverless-python-requirements`
2. `requirements.txt` 作成
3. あとは普通にデプロイすると勝手にいろいろやってくれる

# 手順詳細

## Serverless Frameworkのサービス作成

“`console
$ serverless create –template aws-python3
Serverless: Generating boilerplate…
_______

元記事を表示

pandas1.0以上でのjapandasのimport

pandas1.0以上の環境でjapandasを使うとエラーが起こるようです。
この問題への解決方法の実装がjapandasのgithubにPRされています。
しかしこのPRは2020/6/23に出されていますが、どうやら放置されているようです。
今回はこのPRのコードでlib/python3.8/site-packages/japandasを置き換えたらうまくimportできました。
手順をメモしておきます。

## バージョン・環境
python 3.8.5
pandas 1.2.0
matplotlib 3.3.3
mplfinance 0.12.7a4
WSL2
venvで環境構築
壊れても大丈夫なpython仮想環境で作業することをおすすめします。

## エラー内容
japandas を import すると以下のようなエラーが出ます。

“`
—-> 1 import japandas

~/env38/lib/python3.8/site-packages/japandas/__init__.py in
2 # coding: utf

元記事を表示

Proxyに阻まれ、Pythonやpipで接続エラーになり、Retryされてしまう

自社開発環境はproxyサーバを介してネットワーク接続しているため、
ことあるごとにネットワークエラーになる。

例えばpipを実行時に単純に実行すると以下のようにRetryingが繰り返されます。

C:\Users\thithi7110>pip install webdriver_manager
Collecting webdriver_manager
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(, 'Connection to pypi.python.org timed out. (connect timeout=15)')': /simple/webdriver-manager/
Retr

元記事を表示

累積和をPythonで学ぶ

#累積和とは
探索方法の一つ。全探索と比較して計算回数が少ないため、探索にかかるスピードをあげることができる。累積和の名の通り、和を累積していき作成する表を用いる。
Atcoderの実際の過去問及びPythonによる解法を示し、累積和の知見を深める。

#ABC037-C - 総和
長さ N の数列 {ai} と1 以上 N 以下の整数 K が与えられます。
この数列には長さ K の連続する部分列が N−K+1 個あります。
これらのそれぞれ部分列に含まれる値の合計の総和を求めてください。

```perl:ruisekiwa.py
N,K = map(int, input().split())
a = list(map(int, input().split()))
#N,K = 5,3
#a = [1, 2, 4, 8, 16]

#1.mt:累積和表
mt = [0]
for i, aa in enumerate(a):
mt.append(mt[i] + aa)
#mt=[0, 1, 3, 7, 15, 31]

ans = 0
for i in range(K,N+1)

元記事を表示

Python BoxがBoxと重なっているかを求める関数

[ ymin,xmin, ymax, xmax ]という box1 と box2 があったとき

```python

def isOverlappingBox(box1,box2):
ymin1=box1[0]
xmin1=box1[1]
ymax1=box1[2]
xmax1=box1[3]

ymin2=box2[0]
xmin2=box2[1]
ymax2=box2[2]
xmax2=box2[3]

if xmax1 >= xmin2 and xmax2 >= xmin1 and ymax1 >= ymin2 and ymax2 >= ymin1:
return True #重なっている
else:
return False #重なっていない
```

?
****
フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com

Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。

[Twitter](https://twitter.com/Jack

元記事を表示

分配関数をsum-productアルゴリズムで計算する

「パターン認識と機械学習」を読んでいて,8章のsum-productアルゴリズムを実装しようと思いました.ただ,具体的なベイジアンネットワークの例はすぐに思いつかず,統計力学に頼ることにしました.いろいろ調べていると統計力学でおなじみの分配関数が厳密に計算できたり,基底状態(組み合わせ最適化問題としては大域最適解)を求められたりで非常に関係が深いようです.ここを深堀りすると非常に面白いとは思いますが,力量不足ゆえ簡単な例と実装を示すだけにとどめます.
なお,記法は「パターン認識と機械学習」に合わせています.

# 設定
今回はツリー状のネットワークに配置されたスピン$x_i = \pm 1$が相互作用を持つ系を考えます:
$$
H = -\sum_{(i,j)} J_{ij} x_i x_j
$$
ただし$J_{ij}$は確率的に決まるものとし,この意味でスピングラス系を扱っていると言えます.
このとき,系がカノニカル分布に従うと仮定すると確率分布は
$$
p({\bf x}) = \dfrac{1}{Z(\beta)} \exp [-\beta H]
$$
によって与えられます.この

元記事を表示

PythonのProcessPoolExecutorで即座にプロセスを終了させる方法

# はじめに
Pythonでマルチプロセスで並列タスク実行する方法がいくつかあります。
その中の1つに[concurrent.futures.ProcessPoolExecutor](https://docs.python.org/ja/3/library/concurrent.futures.html#processpoolexecutor)があります。

Python3.2から追加されたビルドインのクラスです。
内部ではMultiProcessingを使いつつ、IFを整理(制限)することでユーザーに優しい作りになっています。
簡単にマルチプロセスを使いたい場合にはおすすめのライブラリです。

一方で複雑な処理を行いたい場合にはIFが乏しいため、かゆい所に手が届かないということもしばしばです。
その中でもProcessPoolExecutorが行ってくれているプロセス管理に関して困ったことがあったので書き記します。

# 困ったこと
ProcessPoolExecutorで生成したFutureの完了を待つ[concurrent.futures.as_completed(fs, tim

元記事を表示

Wagtailのすすめ(6) カテゴリとタグを追加しよう

# はじめに

前回ブロクポストをイメージしたページクラス`PostPage`を導入したので,今回は,それにタグとカテゴリの機能を追加してみよう.これは頻出トピックで,例えば,公式ドキュメントにある[Your first Wagtail site](https://docs.wagtail.io/en/stable/getting_started/tutorial.html)や[ここのチュートリアル](https://www.accordbox.com/blog/wagtail-tutorials-building-blog-part-3/)でも扱われている.

# カテゴリモデルとタグモデルの追加

最初に,下記のように,カテゴリとタグのモデルの定義をcms/models.pyに追加し,それらを`PostPage`に紐付けする.

```python
...
from modelcluster.fields import ..., ParentalManyToManyField
from modelcluster.contrib.taggit import ClusterTaggab

元記事を表示

Amazon EC2でStreamlitを使った簡単な「新規感染者数可視化アプリ」を動かしてみる

# はじめに
- Python3で簡単にデータを可視化できるAPI「Streamlit」を使ってみます
- 対象となるデータはNHKが公開しているコロナウイルスの県別新規感染者数データです
- https://www3.nhk.or.jp/n-data/opendata/coronavirus/nhk_news_covid19_prefectures_daily_data.csv
- 本記事ではStreamlitをEC2サーバで稼働させ、Webアプリケーションとして公開する手順を書きます
- VPCやEC2の構築方法については過去記事をご参照ください
- [Amazon VPCでシンプルなネットワークを構築する](https://qiita.com/TaishiOikawa/items/6201eceaa7a4e815b175)
- [Amazon EC2を起動し、Macのターミナルからssh接続してみる](https://qiita.com/TaishiOikawa/items/2af53935e5f741f05bbb)
- プログラム

元記事を表示

どうせ起動してるPCを使って、宣伝ツイートを自動でRTする

# 概要
いちいちリツイートボタンを押しに行くのがめんどくさいので、
せや!自動化したろ!というおはなし。

# リツイート何度も繰り返すのは案外めんどくさい

僕は音楽とかそういったのを作るのがすきなんですけど、
先日、新曲を発表しました。
宣伝になりますが、ぜひ聞いてみてください。

OTHERカテゴリの最新記事