Python関連のことを調べてみた2020年04月30日

Python関連のことを調べてみた2020年04月30日
目次

raspberrypiとESP32を使った自分でIoTプラットホーム作成(その3)~ESP32設定編アナログ温度センサー

前回でESP32とArduinoの接続が問題なかったので、温度センサーを接続してそれをシリアルで読み取ります。
センサーは手元にあったLM35DZ-Nという製品です。
温度の換算は別として無事、Arduino-IDEでモニタリングすることができました。

次はBuletoothを使ってRaspberryPiとESP32リンクさせます。
これはやったことがないので大きな難関です(やり方はQiitaやWebにたくさん記載ありますが)。

“`
#define LM35DZN 25
void setup(){
Serial.begin(115200);
while(!Serial);
pinMode(LM35DZN,INPUT);
}
void loop(){
int e=analogRead(LM35DZN);

float Vout = e/4095.0*3.3+0.1132;
float temp =(Vout -0.6)/0.01;
Serial.println(temp);
delay(1000);
}
“`

元記事を表示

Ruby と Perl と Java と Python で解く AtCoder ABC 047 C

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder Beginner Contest 047 C – 一次元リバーシ](https://atcoder.jp/contests/abc047/tasks/arc063_a)*
Difficulty: 650

今回のテーマ、正規表現
# Ruby
例えば、`WWWWBBWBBB` を W B でそれぞれまとめますと `WBWB` となり、3回で一色にできることが分かります。
こういう文字列の処理は正規表現を使用すると簡単に解けます。
*[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f58

元記事を表示

AtCoder Beginner Contest 153の復習, E問まで(Python)

フレンズ回。

競プロ初心者の復習用記事です。

ここで書く解は解説や他の人の提出を見ながら書いたものです。自分が実際に提出したものとは限りません。

# [A – Serval vs Monster](https://atcoder.jp/contests/abc153/tasks/abc153_a)

攻撃力Aで体力Hを削るのに必要な攻撃回数を答える問題です。

`H/A`の切り上げが答えとなります。切り上げ処理には`math.ceil()`を使用しました。

“`python
import math
H, A = map(int, input().split())
print(math.ceil(H/A))
“`

ちなみに`math.ceil()`は数が大きすぎる時に誤差が出うると聞きました。`(H+A-1)//A`みたいな書き方でもいいんですが、なんか気に入らなかったので軽く調べました。

[この記事](https://qiita.com/greenteabiscuit/items/d36b74e4492ba028b136)で紹介されている以下の書き方がスマートかもしれま

元記事を表示

raspberrypiとESP32を使った自分でIoTプラットホーム作成(その2)~ESP32設定編Lチカ

#ESP32の設定
家に転がっていたESP32の動作確認をしました。
Arduino-IDE ver1.8.10を使ってESP32ボードを認識させて下記コードを実行します。
LEDが点滅したら成功です。LEDの+と接続するpinの場所は任意です。

ちなみにLEDが壊れていて2回目で成功しました。

“`
void setup() {
// put your setup code here, to run once:
pinMode(33,OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:
digitalWrite(33,HIGH);
delay(500);
digitalWrite(33,LOW);
delay(500);
}
“`

元記事を表示

Python: 教師あり学習(回帰)の応用

# モデルの汎化

## 汎化とは

過学習を防ぐために取られるアプローチが 汎化です。
汎化を意識したモデルを作ることで、学習に使ったデータに適合しすぎず
一般的なケースに対応できるようになります。

回帰分析の目的は、過去のデータからモデルを学習し、未知のデータを予測することです。
基本は過去のデータを用いて値を予測するようにモデルを設定することです。

しかし、過去のデータは株価変動や売り上げ変動などの事象を完全に説明しているわけではありません。
データ予測は幅が存在し、入力するデータが同じでも実際の結果が変わってしまうということもあります。

過学習といった、過去のデータを過信によってデータの予測に破綻が生じ
予測精度が下がってしまう原因となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/430767/d9c445fe-70a3-a258-4571-4ff45d23943c.png)

## 正則化

線形回帰では、 汎化手法として正則化が用いられます。

元記事を表示

raspberrypiとESP32を使った自分でIoTプラットホーム作成(その1)

#raspberrypiとESP32でIoTシステム
GWで時間があるので結構ハードル高いですが作ってみます。下記がゴールになります。
センサーやESP32はあるものを使います。
すべてローカルネットワークでのアクセルを考えています。

1.ESP32を使ってセンサー制御し、raspberrypiへwifiで測定値転送
2.raspberrypiをWebサーバーとデータベースサーバー作成
3.クライアントPCからrasberrypiへアクセスし異常値やグラフなどBIツールで可視化

元記事を表示

AtCoder Beginner Contest 164 復習

#今回の成績

スクリーンショット 2020-04-26 23.13.50.png

#今回の感想

#[A問題](https://atcoder.jp/contests/abc164/tasks/abc164_a)

wがs以上かどうかで場合分け。

“`python:A.py
s,w=map(int,input().split())
print(“unsafe” if w>=s else “safe”)
“`

#[B問題](https://atcoder.jp/contests/abc164/tasks/abc164_b)

高橋くんの攻撃により青木くんの体力はc→c-b、青木くんの攻撃より高橋くんの体力はa→a-dとなるので、制約も緩いことから攻撃をシミュレートして先に体力が0以下になった方が負

元記事を表示

効率よく徳を積めるように,般若心経の一文字目を書くと同じ筆跡で続きを書いてくれるようにした

![4.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201397/86937606-3736-810c-cdb4-7e2b9bcc2b0f.gif)

# 写経と自動化
こんなご時世ですし、家に籠もっているとどんどんストレスが溜まってしまいます。
心を落ち着かせるためには時間をかけて紙にお経を書き写していく写経が良いそうです。

しかし家に居るとはいえ、現代ではテレワークのおかげでいくらでも仕事はできますし、積まれた本やゲームを消化するのに忙しく,一字一句写経している時間はなかなか取れないかと思います。

[般若心経F*ck、コピペで徳を高める話](https://qiita.com/ohr486/items/bcd2c0513c82e909c3ef)
そのような中,上記の記事ではコピペをすることで時間のない中でも写経をしようとする試みがなされています。

[「写経」を自動化し、オートで功徳を積める仕組みを作ってみたのでございます。](https://qiita.com/youwht/items/6

元記事を表示

PythonのスクレイピングでAtcoderの年齢層やレート分布を可視化してみた

#はじめに
AtCoder(競技プログラミング)に参加している人の年齢層とレートの分布をPythonによるスクレイピングと統計処理で可視化してみました。

#おおまかな内容
######1.AtCoderの年齢層
######2.参加回数に対するレートの分布
######3.年齢とレートの関係
######4.使用したソースコード
######参考

#1.AtCoderの年齢層
まずはAtcoderに参加している年齢層を、スクレイピングして集計したので以下に示します。尚、プロフィールで年齢を入力していない人はカウントしておりません。やはりイメージ通りで若い人、特に大学生が多いですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/624261/f0a7d4be-d35c-2c35-89a6-321f3f98376d.png)

#2.参加回数に対するレートの分布
###平均値と標準偏差での可視化
当然ですが、コンテスト参加回数とレートには相関性があると思われます。ちなみに、A

元記事を表示

(機械学習)大量の特徴量を削減する上で有用な手法である主成分分析を学んだ+製造業(特に機械設備保全)への展開を考えた

#はじめに
 今回は、主成分分析と呼ばれる手法についてまとめます。この主成分分析はデータ解析の一手法です。昨今のビックデータを扱う上で有用な手段であるため、活用されています。
 また、GANを初めとするニューラルネットワークにおける**オートエンコーダの考え方の基礎**になります。私自身が勉強をしたいモチベーションはここにあります。

 今回参考にした資料はこちらになります。**特にPRML本は記述が丁寧であったため、式の展開が追いやすく理解が進みました。**名著であることの理由が分かったような気がしました。

1. パターン認識と機械学習 下 (通称PRML)
2. Principal Component Analysis
http://cda.psych.uiuc.edu/statistical_learning_course/Jolliffe%20I.%20Principal%20Component%20Analysis%20(2ed.,%20Springer,%202002)(518s)_MVsa_.pdf

3.機械学習のための特徴量エンジニアリング ―その原理とPyth

元記事を表示

sslが原因でpipをアップデートできなかった

# 問題
## 概要
pipをアップデートしようと思い、コマンドを実行したところ、sslがねーぞということでアップデートできなかった。

## 解決策
アップグレードが原因で、pythonをインストールした時点に入っていたopensslのライブラリを見つけることができなかったことが原因とわかった。
今回は、古いバージョンのopensslが残っていたため、install_name_toolを使って共有ライブラリの場所を教えてあげるか、シンボリックリンクを貼り直すことで解決できた。

## 環境
– MacOS Mojave
– python 3.6.3
– openssl(ver1.0と1.1が共存)

# 問題発生
pipをアップデートしようと思い、コマンドを実行したところ、sslがねーぞというエラーが出てきてアップデートできなかった。

“`
hoge-Macbook:~ hoge$ pip install -U pip
WARNING: pip is configured with locations that require TLS/SSL, however the ssl m

元記事を表示

ABC164 F – I hate Matrix Construction をSAT/SMTソルバで解く

AtCoder Beginner Contest #164 のF問題として出題された**「I hate Matrix Construction」**は非常に難しく、[AtCoder Problems](https://kenkoooo.com/atcoder/) による推定難易度では**新体制移行後のABCで2番目に難しい問題**となっています。

その要因として、問題の考察自体が難しいことも挙げられますが、それよりも解を得るために必要な盤面のパターンや条件分岐が膨大であり、実装が非常に困難であることが大きいです。

ところで、この問題は指定された条件を満たす解を与えるプログラムを考える、「構成」系の問題です。特にこの問題の条件は非常に単純な論理式で記述することができます。このような問題はSATやSMTなどのソルバと非常に相性が良いです。

SMTソルバを用いることで、**問題に対して一切本質的な考察を行うことなく、満たしてほしい制約を入力するだけで自動的に問題を解いてくれます。**実際にやってみました。

なお、SATやSMT自体の解説は [SAT/SMTソルバを自作してみる話 –

元記事を表示

PyPhi公式ドキュメントより「XOR Network」の解析

# まえがき

統合情報理論(IIT)を扱うライブラリPyPhiの公式ドキュメントから使用例を読み、実際に動かして理解を深めます。

[前回の記事](https://qiita.com/NNNiNiNNN/items/7074d7773b44f33d9b13)ではライブラリの導入と簡単な計算例を扱いました。

今回は公式ドキュメントよりXOR Networkに関する使用例を見てみましょう。

本当に足りない知識で雑な和訳しながら書いてるに過ぎないので、有識者の指摘があるととてもありがたいです。

元記事は[こちら](https://pyphi.readthedocs.io/en/latest/examples/xor.html)

## ネットワークの作成

A, B, Cがそれぞれ繋がり合った完全グラフを考えます。A, B, Cはそれぞれ自分自身との結合は持っていません。

![rapture_20200422164134.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/356208/d7024428-

元記事を表示

ax+by=1を満たす整数の組。

第58回数学オリンピックの問6では、伝統とも言うべき初等整数論の問題が出題されました。

その問題では「互いに素な整数a,bに対しax+by=1を満たす整数x,yが存在する」という事実が常識中の常識として使われます。
ここではその常識中の常識をpythonで実装してみた結果を報告致します。

“`ruby:
print(“互いに素な正の整数を2つ入力して下さい。”)
a, b= map(int, input().split())
n = 1
r = a**n % b
#print(r)
while r > 1:
n = n + 1
r = a**n % b
#print(r)
m = a**n // b
print(str(a)+”x+”+str(b)+”y=1を満たす整数xとyは”+str(a**(n-1))+”と”+str(-m)+”です。”)
“`

理屈自体は、以前紹介したオイラーの定理です。
https://qiita.com/naoya_suzuki/items/5490a1099dee8ad7065e

試しにa=6,b=11としてみると「6x

元記事を表示

【初心者向け】10行以内のスクリプト(1.folium)

### 【初心者向け】10行以内のスクリプト(1.foliumで地図のプロット)
pythonで色々なライブラリを使えば、「少ないコードでもちょっとした事が出来て、少なければ5行程でもちょっとしたスクリプトが作れ、便利だな。」と思ったので、pythonやその他、コマンドを羅列しただけのものも出てくるかも知れませんが、10行程のスクリプトを不定期で投稿してみようと思います。

**第1回**として、「folium (pythonからleafletを利用して地図をプロットするpythonのライブラリ)を使用して、銀座周辺の地図をマーカー付きで3ヶ所プロットするスクリプトを投稿したいと思います。
このスクリプトでは、以下3ヶ所をプロットしました。

– 有楽町駅: 位置情報【35.6749187,139.7606366】
– 銀座コリドー街: 位置情報【35.6703699,139.7573871】
– Ginza-SIX: 位置情報【35.6695908,139.7618857】

【環境】
LinuxMint19.3
python: 3.6.9
pip3: 9.0.1
pandas:

元記事を表示

Pythonを使ってスプレッドシートをローカルで操作

このQiita記事は、YouTube動画で使ったコードのメモです。
▼詳細は動画を確認ください(YouTube動画に「いいね」を押してくれるとめちゃめちゃ嬉しいです)

[![pythonGsheet.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/216701/3b53e497-2aa8-5fbf-b196-01f4a8453840.gif)](https://youtu.be/TpkL5hQDPWo)

## 下準備
まず、[http://console.developers.google.com/](http://console.developers.google.com/) のページで新しいプロジェクトを作って、以下の二つのAPIを有効にします。

1. Google Drive APIを有効にして、JSONファイルを取得(creds.jsonに名前を変更)
2. Google Sheet APIを有効にする

それから、ターミナルで2つコ

元記事を表示

AtCoderで水色になるまで

# 自己紹介
こんにちは。先日水色コーダーになった大学三年生です。言語はpython,始めたのは去年(2019年)の6月です。あまり文章を書くのが得意ではないのですが、最後まで見ていただければ幸いです。
# 競技プログラミングを始めた経緯
大学に入って情報系の勉強を始め、同年10月に基本情報、翌年の4月に応用情報を取り、次に何勉強しようかな~と考えていたところ、情報系でない友人がpythonで機械学習を独学で行っていたのを発見し、とんでもないな。と思いpythonの勉強を始めました。
当時はpythonという言語のことは知っていたのですが、具体的な文法は何も知らず、学校ではProcessingというあまり有名でない言語を学ばされていたため、すごく焦りを感じたのを覚えています。情報系でない学部の学生がプログラミングやりだしたら、自分たちの市場価値落ちるじゃん!となり、大急ぎで環境構築をし、文法の勉強を始めました。
ところが、inputは適当にできるがoutputする場面が全くなく、Progateなど、その他プログラミング勉強サイトを探してみましたが、しっくりくるものがなくどうしたものかな

元記事を表示

pandasでデータ分析する時によく使う手法覚書き(初学者用)

#はじめに
pandasでデータ分析する時によく使う手法をまとめました。随時、加筆修正していきます。

#1.DataFrameの作成
“`python
#DataFrameを作成し、リストを格納
pd_sample = pd.DataFrame(リスト)

#DataFrameを作成し、辞書で複数のリストを格納
pd_sample = pd.DataFrame({“列A”:リストA, “列B”:リストB})

#空のDataFrameを作成し、後続処理で別のDataFrameを結合
pd_sampleA = pd.DataFrame()
pd_sampleA = pd.concat([pd_sampleA, pd_sampleB])
“`

#2.データの結合(ユニオン)
“`python
#pandas.concat()関数
pd_sampleAll = pd.concat([pd_sampleA, pd_sampleB], ignore_index=True)
“`

**pd_sampleA**

| | 列A  | 列B  | 列C  |
|:–

元記事を表示

Python: 教師あり学習(回帰)

# 教師あり学習とは

## 機械学習の種類

機械学習は主に3つの分野に分かれます。

1,教師あり学習
蓄積されたデータを元に機械が新しいデータや未来のデータの予測
あるいは分類を行うことを指します。 株価の予測や画像識別などが当てはまります。

2,教師なし学習
蓄積されたデータの構造や関係性を機械が見出すことを指します。
小売店の顧客の傾向やGoogleの画像認識などで用いられています。

3,強化学習
学習形態は教師なし学習に近いのですが、報酬や目標などを設定することで学習時に
利益の最大化を図るように学習をする手法です。 囲碁などの対戦型AIとして用いられていることが多いです。

このなかで、教師あり学習は回帰と分類の2つの手法に大別されます。

## scikit-learnを用いた機械学習

機械学習のためのモジュールであるscikit-learnを利用します。

“`python

# 必要なモジュールのインポートします。
import request
from sklearn.linear_model import LinearRegression

# 次

元記事を表示

言語処理100本ノック 2020をやった 第3章

# はじめに
満を持して[言語処理100本ノック 2020](https://nlp100.github.io/ja/)が公開されたので早速やってみます。

第3章ではWikipediaの記事から正規表現で必要な情報を抽出・整形します。

Wikipediaのマークアップ情報は[Help:早見表 – Wikipedia](https://ja.wikipedia.org/wiki/Help:%E6%97%A9%E8%A6%8B%E8%A1%A8)、API情報は[API:画像の情報 – MediaWiki](https://www.mediawiki.org/wiki/API:Imageinfo/ja)に書いてあります。が、マークアップ情報は情報が不完全なのでデータを見たり、[Wikipediaのページ](https://ja.wikipedia.org/wiki/%E3%82%A4%E3%82%AE%E3%83%AA%E3%82%B9)をみてパターンを洗い出す必要があります。

# 第3章: 正規表現
Wikipediaの記事を以下のフォーマットで書き出したファイルjawiki-cou

元記事を表示

OTHERカテゴリの最新記事