Python3関連のことを調べてみた2021年08月31日

Python3関連のことを調べてみた2021年08月31日

機械学習における不均衡データ対策

#機械学習における不均衡データ対策について

機械学習における不均衡データとは,クラスごとのデータ数が均一でない場合のデータである.
例えば,Aクラスが99件,Bクラスが1件の場合,すべて,Aクラスと予測すれば,100件中99件が正解となりAcurracyは0.99と一見高性能であるが,Bクラスを予測することは難しい.
少数のクラスをきちんと予測することができるように不均衡データを扱う際には,対策を行わなければならない.

| |実際のAクラス |実際のBクラス |
|—|—|—|
|予測したAクラス|99 |1 |
|予測したBクラス|1 |0 |

#対策の種類
– サンプリング
– 異常検知問題として解決
– コスト考慮型学習
– 不均衡データに対応した損失関数の使用

#サンプリング

不均衡データ対策として,簡単に行えるのはサンプリングである.
サンプリングには二種類あり,多数のクラスに合わせるオーバーサンプリングと少数のクラスに合わせるアンダーサンプリングがある.
しかし,単純にサンプリングを行うとオーバーサンプリングでは,少数のクラスの重複が発生

元記事を表示

python3でコーディングテストに受かるための自分メモ[8/31] (標準入出力について)

##python3で標準入力をキャッチする
標準出力するのはprint文
では入力をキャッチするのは
“`input_line = input()“`
で取得することができるらしい。
もちろんキャッチした型はstring型。
複数行キャッチしたい場合は、
2行書いたら1行ずつキャッチすることができた。
###文字列操作について詳しく調べてみる。
#####string.strip()
文字列の前後の空白を取り除くことができるらしい。
改行文字なども取り除かれる。
取り除きたいものを指定すれば取り除くことができる。
lstripとrstripはleftとrightの略で指定した方の空白を取り除く。
#####string.replace()
引数を二つ取り、第一引数で指定したものを、第二引数で指定したもので置き換えることができる。
#####string.split()
文字列を空白で区切り、配列で取得する。
#####string[3:7](スライス)
先頭3文字目から7文字目を取得することができる。

###ついでにファイル操作も
#####open
ファイルオープン
“`f

元記事を表示

縦持ちデータをグループ化して横持ちデータに変更

わけあって下記のようにgroupをグループ化して、指定した列をユニーク数分新しいカラムを用意して横持ちに変換する必要がでてきました。

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/428239/592a9f64-35f6-a1f7-097a-210f12c2fdb8.png)

今回の例でいう新しいカラムを作成するcol1,col2以外はグループ毎に同じデータが入っているという条件です。

メソッドでさくっとできるかなと考えていたのですが、
メソッドではできなさそうなので、自分で処理を作成しました。
同じコードを書く必要が出てきたときに備えてメモを残しておきます。

“`py:データ用意
import pandas as pd
data = {
‘group’: [‘A’, ‘A’, ‘A’, ‘B’, ‘B’, ‘C’, ‘C’, ‘C’, ‘C’ ],
‘other_col’: [‘AA’, ‘AA’, ‘AA’, ‘BB’, ‘BB’, ‘CC’, ‘CC’, ‘C

元記事を表示

pythonにおけるMySQLへの接続とSQLを用いた簡単なCRUD処理

# 執筆時点でのバージョン情報
“`bash
~/Desktop/projects/python
$ python –version
Python 3.9.5
$ pip –version
pip 21.1.1
“`

# 目次
1. DB接続用ライブラリpymysqlのインストール
2. DB接続の前準
3. SQLを用いたCRUD処理

# 1. DB接続用ライブラリpymysqlのインストール
“`bash
$ pip install pipenv
$ pipenv –python 3.9.5
$ pipenv install pymysql
“`
– インストールしたライブラリがPipfileの`[packages]`に追記されます

“`python:Pipfile
[[source]]
url = “https://pypi.org/simple”
verify_ssl = true
name = “pypi”

[packages]
pymysql = “*”

[dev-packages]

[requires]
python_version = “3.

元記事を表示

# 毎月壁紙を自動で変えたい!

# Qiitaはじめました
いろんな調べごとでお世話になってたQiita, まさかの初投稿です。
うまく書けるかドキドキです。
備忘として、やったことをメモしていければなーと思います。

# 毎月壁紙を自動で変えたい!
いろんなところで配布されているカレンダー入りの壁紙、かわいくて使いたいけど手動で毎月変えるのが面倒なので、Pythonを使って自動で変えるプログラムを作ってみました。
今回は[東京ディズニーリゾート](https://www.tokyodisneyresort.jp/tdr/wallpaper.html)で配布している壁紙を使いたいと思います。
初めてのPythonでしたが意外と簡単にできました。

# 環境
– Windows10
– Python 3.9.6

# はじめに
まず初めに、画像をダウンロードするコードを書いてみます。
といっても、[コピペ](https://note.nkmk.me/python-download-web-images/)です。
※この辺のお勉強はこれから頑張ります。。。

~~~python3
import os
import p

元記事を表示

PythonでバイナリSTLファイルを読み込み表示させる

# はじめに

この記事は,STLファイルを例にしてPythonでバイナリファイルを読み込む方法を調べたときのメモです.

Google Colab と Gist にコードがあります.

https://colab.research.google.com/drive/1XgTe46uWYTLRRoO5i2B8r0Kr2c9vflay?usp=sharing

https://gist.github.com/Be4rR/f366e08d5834780e5cef9ae367e36b45

:::note info
単にPythonでSTLファイルを読み込みたいのであればnumpy-stlなどを利用したほうが良いです.
:::
https://numpy-stl.readthedocs.io/en/latest/index.html

# ASCII形式とバイナリ形式

[STLファイル](https://ja.wikipedia.org/wiki/Standard_Triangulated_Language)にはASCII形式とバイナリ形式の2種類が存在します.下のサイトでフォーマットが詳

元記事を表示

進化戦略のプロシージャ

Twitterの広告にシュタインズゲートが流れてきたので
お?っと心惹かれ paizaで電脳言語のオルダーソンループ挑戦したけど
進化戦略のプロシージャは問題文がわかりにくすぎるだろこれ、
二度もしくってイラッとしたわ

競プロやったことないんで
はじめinput() の使い方からしてWhat?って感じだったわ

“`
# coding: utf-8
# 自分の得意な言語で
# Let’s チャレンジ!!
import sys
n,m = input().split()

#if n == m:
# print(‘Yes’)
# sys.exit()

act_dict = {}
for i in range(int(m)):
k,v = input().split()
act_dict[int(k)] = int(v)

stay_home = {}
for k,v in act_dict.items():
if k in stay_home or k == v: # 同じ部屋には移動可能
continue
idx = k

元記事を表示

【Python】サーバーサイド初心者にオススメのUdemyのDjango動画講座5選

web開発に入門したい人向けに、Django関連のおすすめUdemy講座をまとめました。
初心者OKのものがほとんどですが、Pythonの簡単な文法(for文、if文など)はあらかじめ知っていることが望ましいです。
(またはPythonに全く馴染みがなくても、多言語の経験があればOKです。)

## 【徹底的に解説!】Djangoの基礎をマスターして、3つのアプリを作ろう!(Django2版 / 3版を同時公開中です)
おすすめ度:★★★★
・[【徹底的に解説!】Djangoの基礎をマスターして、3つのアプリを作ろう!(Django2版 / 3版を同時公開中です)](https://px.a8.net/svt/ejp?a8mat=3BBPJR+AVRCOQ+3L4M+BW8O2&a8ejpredirect=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fdjango-3app%2F)
### この講座で学べる内容
・Djangoを使って作成したウェブサイトを作ることができるようになります。
・Djangoの基礎的なコードの書き方を学ぶことができます。

元記事を表示

BeautifulSoupでドメイン内リンクを列挙する。

#実行環境
・macOS High Sierra 10.13.6
・Python 3.8
・**urllib3** 1.26.4
・**beautifulsoup4** 4.9.3
・エディタ Atom
 ・AtomはデフォルトでPythonの実行をサポートしていないので、必要なパッケージをダウンロードする必要がある

#はじめに
:::note alert
クローリングしようとしているサイトが、クローリングを許可しているか、禁止しているかについては十分な注意を払うべきである。
:::

あなたは、自社のWebサイトに使用している写真をすべて改めるよう上司の指示を受け、とりあえずのところは、自社Webサイトのリンクをいくつも辿ってドメイン内を東奔西走し、どんな写真が使われていて、あるいは複数のページに重複して使用されている写真がどれだけあって、それぞれ何度使用されているか数えなければならなくなった。
その判断が正しいとして写真のチェックミスがないように、まずは**ドメイン内のすべてのページをもれなく列挙しよう!** と思い立った。

URLを直打ちしないとローマ経由でも辿り着けないよう

元記事を表示

Google Doorbellで自分を認識したら自動でSesame3を解錠させてみた(Python初挑戦)

#やりたかったこと
Google Doorbellが発売されたので、カメラが自分の姿を認識したときにSesame3を自動で解錠させたかった

#困ったこと
・Sesame3がいまだにIFTTT連携してくれない(2021年8月現在)
⇒Python使ったことないのにpysesame3を使う羽目になった

#やろうとしたこと
・GoogleDoorbellが認識済みの人物をとらえると、Homeアプリから人物名入りの通知が届く
・Homeアプリから飛んできた「人物」入りの通知をトリガーとして、MacrodroidからTasker実行
・pysesame3を使ったpythonプログラムを実行してSesame3を解錠

#困ったこと2
・Android上でPythonを動かす環境の選択肢に最初に上がったのが下の2つ
###Pydroid
・プログラムは作れたものの、Taskerから実行させる方法がなかった
・Macrodroid経由でアプリを起動することはできるが、それならSesameアプリからでも同じ
###QPython
・なんか知らんけどpipからpysesame3をインストールできない

元記事を表示

SeleniumでWebサイトをPDFとして保存するとき、デフォルトの保存先を変更する方法(chromedirver)(Python)

# 概要
タイトルの通り、SeleniumでWebサイトをPDFとして保存するとき、デフォルトの保存先を変更する方法を解説します。日本語で調べて出てくる情報が、私の調べた限りだと、上手いことできずに少しつまづいたので共有しようと思いました。なお、WebDriverはChrome用のものを公式サイトからダウンロードして使用しています。言語はPythonですが、ChromeDriverを使っていて同じような状況の場合は言語に関わらず有用な情報だと思います。

# 前置き
Seleniumを使って、WebサイトをPDFとしてダウンロードする方法が知りたい方はこちらのサイトを参考にしてください。

ただし、こちらのサイトにはデフォルトの保存先の変更方法に関して間違いがあり、それに関する解説が本記事の目的です。

# 本題

まず、結論から書くと、ページの印刷用(WebサイトをPDFとして保存する用)のデフォルトフ

元記事を表示

python-pptxの図形一覧

# python-pptxの図形を調べてみた。
python-pptxはPowerPointをPythonでかけるライブラリです。
あまりにも画像の数が多かったり、毎回似たような表を作成しなければならないとき、自動化ツールとして活用できます。

そのため、画像挿入や表挿入、グラフ挿入に関する記事は調べればそれなりの数が出てきます。

しかし、図形の挿入となると記事はかなり少なくなるようです。

今回はpython-pptxで簡単な図形追加をまとめました。182種類の図形が追加できるようなのですが、そのうち約170個ほどを実際に出力してみています。

ちなみに、図形の細かい調整までは労力が大きすぎるので控えました。別の機会に調べてまとめたいと思います。

#図形の追加の仕方
python-pptxの図形はshapes.add_shapeメソッドで追加できます。
引数は“`add_shape(MSO_SHAPE.xxx, left, top, width, height)“`です。
このうちの“`xxx“`の部分に何を入れるかで挿入される図形が変わります。
例えば、直線を引く場合は

元記事を表示

Tkinterでオブジェクトを複数、変数に依存して作る(覚え)

#環境
・macOS High Sierra 10.13.6
・Python 3.8.8
・tkinter 8.6.10
・エディタ Atom
 ・AtomはデフォルトでPythonの実行をサポートしていないので、必要なパッケージをダウンロードする必要がある

#はじめに
tkinterでインターフェイスを作るときに、似たようなオブジェクトを複数作りたいときがある。
とりあえず良さそうな方法が見つかったのでちょっと覚書きする。

#GUIの基本
まずはHeloo world!に相当するコードを書く。以下の通り。

“`main.py
from tkinter import *
from tkinter import ttk

root = Tk()
root.title(‘My App’)

#ウィジェットの作成
label_1 = ttk.Label(root,text=’Hello World!’)

#レイアウト
label_1.pack()

# ウィンドウの表示開始
root.mainloop()
“`
実行すると次のようなウィンドウが表示される
![スクリーンショット

元記事を表示

venvで立ち上げた仮想環境の中で指定したバージョンのPythonを起動させる方法

#直面した事象

ローカルのTerminalで__*pyenv local*__で設定したPythonのバージョンが、__*python -m venv*__で立ち上げた仮想環境の中で引き継がれない。

#やりたいこと

– venv仮想環境野中で、Python 3.7.9系を使いたい。(Python 3.9.6ではなく)
– Pyenv localで3.7.9に変えたのに、そのディレクトリでvenvコマンドを叩いて仮想環境を作ると、仮想環境野中では3.7.9が立ち上がらない。

##成功した解決策

(参考)

https://qiita.com/TheHiro/items/88d885ef6a4d25ec3020

>### 解決方法
> https://github.com/pyenv/pyenv#homebrew-on-mac-os-x を読み直してみたら、「pyenv initを使うように!」とあったので、早速実行。
>
>““bash:
>$ pyenv init
># Load pyenv automatically by appending
># the foll

元記事を表示

ダイヤモンド継承

ふと、これってダイヤモンド継承の出番か?
という場面が来たので検証してみました。

# ダイヤモンド継承とは?

下記図のように親クラスから2つ以上の子クラスに継承し
孫クラスに分岐させた子クラスを継承して1つのクラスにすることです。

このメリットはクラスのメソッドを分岐させることによって、
メンテナンス性を向上させることだと思います。

実際にこれを書いているときにダイヤモンド継承をやりたいと考えた理由は
ドメイン駆動設計の構築中に1クラスのメソッドが多

元記事を表示

Telegraf の入力データフォーマットを JSON にする

こちらのプログラムの Telegraf の入力フォーマットを JSON に変更しました。プロトコルは udp のままです。
[Telegraf で InfluxDB 2.0 にデータを入れる](https://qiita.com/ekzemplaro/items/1156e8371aea84604d13)

Telegraf の設定ファイル

“`text:/etc/telegraf/telegraf.conf
(省略)
[[outputs.influxdb_v2]]
urls = [“http://127.0.0.1:8086”]
token = “1zIYs1taCm3pWQOBUNk0ssYccOF7YgJcdGyJDbiFYTBf7hcPvyl5nGyt71rNVkYtg2rB
ceUwQ1r5Xzm7Mabcde==”
organization = “ekzemplaro”
bucket = “tochigi”
(省略)
[[inputs.socket_listener]]
service_address = “udp://:8092”
json_name_key = “n

元記事を表示

【Python3】天気予報が変わったら、LINEに通知が来るBotを作ろう

tenki.jpの天気予報を利用した、天気急変お知らせシステムを作ったので投稿します。

#1.目的
朝の天気予報ではこの時間は晴れのはずだったのに、雨が降ってきて洗濯物がびしょ濡れ…
1時間ごとの天気予報が変わったら通知してくれれば気づけた…
このようなことがなくなればいいと思い、作りました。

#2.実装方法
A.ハードウェア
RaspberryPi(Pico以外)
少し動作が重いですが、本体とケース込みで3000円以下とコスパがよいZero WHがお勧めです。
https://akizukidenshi.com/catalog/g/gM-12958/

B.ソフトウェア
Python3
バージョンは3.8を利用しました。

LINE Notify
登録の仕方、メッセージの送信方法は以下の記事を参考にしました。
https://qiita.com/moriita/items/5b199ac6b14ceaa4f7c9

#3.実装時注意点
ファイルの入出力について

#4.実装方法
4-1.実装コード
今回は、モジュールを利用したく動作を2つのファイルに分けた。
A:1時間ごとの天

元記事を表示

pip3 installでエラー [Errno 13] Permission denied

##やりたいこと
NanoPlotツールをPyPIからダウンロードして、インストールする
>PyPIとは?
>インターネット上にあるPythonパッケージの貯蔵庫
>https://pypi.python.org/pypi

##実行結果

“`:Terminal
% pip3 install NanoPlot
DEPRECATION: Configuring installation scheme with distutils config files is deprecated and will no longer work in the near future. If you are using a Homebrew or Linuxbrew Python, please see discussion at https://github.com/Homebrew/homebrew-core/issues/76621
Collecting NanoPlot
Using cached NanoPlot-1.38.1-py3-none-any.whl
Requirem

元記事を表示

データサイエンスを勉強するために参考にしている本・教材まとめ

2020年9月頃から本格的にデータサイエンスを勉強し始めました。
ちょうど1年ほど経ったので、自分がこれまで読んできた書籍や使ってきた教材の中で個人的にデータサイエンスを理解するのに役立ったもの(役立ちそうなもの)、何度も読み返している、見返しているお気に入りをまとめます。

データサイエンティストについて調べると必要なスキルとしてエンジニアリング力、データサイエンス力、ビジネス力と言われているので、幅広く勉強するようにはしています。

勉強するための本や教材を選ぶ際には、実際にデータサイエンティストとして活躍されている方のオススメをいつも参考にしています。

本や教材で勉強する際は、1回目は分からないところが多いですが一通り目を通し、しばらくしてから再度読み返すことが多いです。2回目は理解度が上がっており、より楽しく勉強できています。

##統計学・数学
[1、統計学が最強の学問である](https://www.amazon.co.jp/%E7%B5%B1%E8%A8%88%E5%AD%A6%E3%81%8C%E6%9C%80%E5%BC%B7%E3%81%AE%E5%AD%A

元記事を表示

kaggle初心者のタイタニックの次にやるオススメのコンペ

# はじめに
機械学習の学び方や学習フローを調べると、やったほうがいい事として**「Kaggle」**に参加することが書かれてることが多いです。
Kaggleはデータサイエンティストの闘技場みたいなものでして。

[Titanicコンペ](https://www.kaggle.com/c/titanic)がチュートリアルとして有名ですよね。

実際のデータに触れて、前処理やモデル構築をして、より良いモデルを作っていく。
そうした練習ができるということで初心者からするととても有益です。

ただ、自分もそうなのですが、

###**「Kaggleのアカウントは作った。タイタニックコンペもやってみた。この後どないすりゃええねん!」**

となる初心者の方は多いのではないでしょうか?

実際自分は、タイタニックコンペが終わった後どのコンペに参加したらいいかわからず、モチベが出ずに放置してしまいました。

ただ最近、再び本腰入れて機械学習を学び始めて2ヶ月、Kaggleに再びチャレンジしてみようということでチャレンジしており、Kaggleの楽しさがわかってきて、自分なりにタイタニックの後はこれを

元記事を表示

OTHERカテゴリの最新記事