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

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

機械学習におけるアルゴリズムAdaboostを実装をしながら丁寧に理解しようとした(+行列(array)計算も理解が深まった)

#はじめに

 Kaggleなどでよく使われているXGBoostなどの元となるブースティングについてまとめます。ブースティングのアルゴリズムの中でもAdaboostについて実装をしながら理解していきたいと思います。
 
@amber_kshz さんのこちらの記事を使用させて頂き、実装をしました。

>PRML14章のBaggingとAdaBoostをPythonで実装
https://qiita.com/amber_kshz/items/8869d8ef7f9743b16d8d

 **特に、行列(array)を用いて効率よく早く計算する手法を学ぶことができました。**その方法についてもまとめていければと思います。
 

要点は下記です。

+ ブースティング(Boosting)を理解する
+ Adaboostのアルゴリズムを理解する
+ Adaboostを実装することで理解を深める
+ 決定株(Decision Stump)を理解する
+ 実際に動かしてみる+試行回数による差を評価する

##ブースティング(Boosting)を理解する

 弱学習器と呼ばれる学習器を組み合わせる手

元記事を表示

atcoder ABC164

[ABC164](https://atcoder.jp/contests/abc164)のことです、ratedのコンテストは初めてです。

# A – Sheep and Wolves
かなり簡単。コードテストしたからちょっと遅れた。(言い訳)

“`python
S, W = (int(x) for x in input().split())
if S > W:
print(“safe”)
else:
print(“unsafe”)
“`

# B – Battle
競プロでwhileとかつかっていいのかな?って思ったけど普通に通った。

“`python
a,b,c,d = (int(x) for x in input().split())
while 1:
c -= b
a -= d
if c <= 0: print("Yes") raise SystemExit() elif a <= 0: print("No") raise SystemExit() ```

元記事を表示

PyCaretでをボストン不動産価格を予測してみた

#はじめに
先日、リリースされた機械学習ライブラリーPyCaretを使ってみました。
データの特徴量分析や複数のモデルとの性能比較作業が自動化され、これまでのデータサイエンティストの作業時間がだいぶ減ると思います。

今回は、回帰問題のボストン不動産問題をPyCaretでかけてみます。

**前回の記事:
[1. PyCaretでワインの品質を分類してみた](https://qiita.com/kotai2003/items/c8fa7e55230d0fa0cc8e) **
**[2. PyCaretでタイタニック生存予想をしてみた](https://qiita.com/kotai2003/items/a377f45ddee9829ed2c5) **

#1. PyCaretのインストール

下記のコードを実行しインストールします。
Anacondaを使っていますが、PyCaret専用の仮想環境を立ち上げてインストールしました。
既存のCondaで管理されてる仮想環境では、エラーが発生する場合があります。(恐らくpipとcondaとの衝突が原因)

“`
pip install

元記事を表示

自作インタプリタをセルフホスティングするまで

[Calcium](https://sites.google.com/site/calciumlanguage/) というインタプリタを作っています。今回、Calcium インタプリタを Calcium 言語自身で実装するまでを振り返りました。

# Calcium 言語とは

まずは Hello, World してみます。

“`json:hello.json
[
[1, [], “#”, “0_18”],
[1, [], “call”, null, [“var”, “print”], [“Hello, World!”]],
[1, [], “end”]
]
“`

Calcium 言語のコードは JSON 配列でできています。なぜ JSON でコードを記述しようとしたのかというと、字句解析が要らない(`JSON.parse()` 等すれば良い)ためです。また、おそらく Web 環境と相性がいいはずだと、なんとなく考えていました。データフォーマットとして記述できれば、何かに使えるのではないかと。(後で調べたところ、例えば Scratch の内部 VM は JSON で

元記事を表示

FlickrAPIで画像ダウンロード

#はじめに
画像認識プログラムを作るために、まずは訓練させるための大量の画像データが必要。
そのために、画像データを自動で収集するプログラムを作成する。

参考教材:[【画像判定AIアプリ開発・パート1】TensorFlow・Python・Flaskで作る画像判定AIアプリ開発入門](https://www.udemy.com/course/tensorflow-advanced/)

##Flickr
画像収集サイト
https://www.flickr.com/

API
https://www.flickr.com/services/api/

##下準備
https://qiita.com/Saayaman/items/a3066697a108a7e7fc39
の「1. api登録」参照。
キーと秘密鍵(?)の取得が必要。

##インストール方法
https://stuvel.eu/flickrapi

“`
pip install flickrapi
“`

#ソースコード
検索した画像を指定のフォルダに保存する。`download.py`というプログラムを作成する。

元記事を表示

PythonでマークダウンをPDFに変換する

## やったこと

Pythonで、マークダウン記法を含むWebページをスクレイピングしてマークダウンに出力し、さらにそのマークダウンをHTMLにしてからPDFに変換しました。(ややこしい)
スクレイピングは`Beautiful Soup`を使用して行いましたが、そこは今回は割愛します。
マークダウン→HTML→PDFに関する情報があまりなかったのでまとめました。

マークダウン→HTMLは`Markdown`を使用し、HTML→PDFは`pdfkit`を利用しました。

## 環境

環境は以下になります。

– Windows10
– wkhtmltopdf
– Python3.8
– Markdown==3.2.1
– pdfkit==0.6.1
– Pygments==2.6.1

Windows環境の場合、`pdfkit`を利用する際に事前に`wkhtmltopdf`をインストールする必要があります。
[こちらのサイト](https://wkhtmltopdf.org/downloads.html)から64bit版をインストールします。
パスを通していいですし、今回するように

元記事を表示

時系列データ関連の本10冊読んだので書評書く。

#各本の立ち位置について

どんな軸で立ち位置を説明しようか悩みますが、今回は「対象読者レベル」と「時系列との関係」についての二軸で「独断と偏見」で位置づけしてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/991fdb22-0d30-7a93-a62b-3125386f762e.png)

#はじめに
仕事でデータ分析に関して種々のデータに色々な手法を使ったりするのですが、分析していると時系列のデータが意外と多い。

数値予測や異常検知などは時刻と共に記録されていることが多いです。
この時系列データに関する知識を付けるために網羅的に本を読んで、知識を付けようと思いました。
今回はその中で、「どの本にどんな事が書いてあって、他の本との関係性は?」を書評にすることで、皆さんの本の購入の手助けになればと思っています。

「この本の立ち位置も調べて」
「時系列本ならこの本入れなアカン」
などあれば教えてください。

[時系列分析のためのブックガイド](https

元記事を表示

とにかく基本無料のPython・機械学習が学べるサイトをまとめた

#はじめに
ネットサーフィンして集めたサイトを名前とリンクだけ紹介します。
Progateやドットインストールなど有名なサイトは入れてません。
内容は説明していませんがご了承ください。
では行きます。

#Codeprep
穴埋め形式の講座です。Python以外もあります。
https://codeprep.jp/featured

#Paizaラーニング
Pythonは全部無料です。
https://paiza.jp/works/mypage

#PythonエンジニアによるPython3学習サイト
入門から応用までかなり詳しく書かれてるサイトです。

PythonエンジニアによるPython3学習サイト

#Leagence(リージェンス)
Progateみたいな感じです。全部無料で一応Juliaのコースもあります。
https://leagence-prog.com/

#とある科学の備忘録
高校生が書いてるブログです。Python以外のことも多いです。
https://shizenkarasuzon.hatenablog.com/archive

元記事を表示

PyCaret を使って東京の中古マンション価格を予測してみよう!

§ PyCaret ってなんだ?

今Twitter等でも話題になっている、PyCaretを使って予測モデルを作り、中古マンションの価格を予測するステップを紹介したいと思います。

PyCaretを使うと、最小限のPython コードで、予測モデルの作成、チューニング、予測の実施等一連の機械学習のステップが可能となります。

この記事では、これから機械学習を始めようという方に向けて、Pycaretを通して機械学習ってなんだっけ?というところを紹介しながら進めていきたいと思います。感覚的な分かりやすさを重視しますので、厳密な定義とは異なる表現もあるかもしれませんがご了承ください。

元記事を表示

言語処理100本ノック 2020【00~39 解答】

言語処理100本ノックの2020バージョンが公開されましたね。

https://nlp100.github.io/ja/

この記事では、参照しやすいように淡々と解答を貼っていきます。
解説は別の記事に書いています。

# 第1章: 準備運動
https://kakedashi-engineer.appspot.com/2020/04/15/nlp100-00-09/

## 00. 文字列の逆順

“`python
s = ‘stressed’
print (s[::-1])
“`

## 01. 「パタトクカシーー」
“`python
s = ‘パタトクカシーー’
print (s[::2])
“`

## 02. 「パトカー」+「タクシー」=「パタトクカシーー」
“`python
s1 = ‘パトカー’
s2 = ‘タクシー’
print (”.join([a+b for a,b in zip(s1,s2)]))
“`

## 03. 円周率
“`python
s = “Now I need a drink, alcoholic of course

元記事を表示

如何先开始写出一个程序

#谈谈写出一个方案。
如果你最近一直在做程序,而你认为
我在初中时接触的第一个节目,是我在初中时接触的第一个节目
是N80-BASIC。
我还记得,但下面这句话完全在我的脑海里。

“`N88-BASIC
N88-BASIC

WIDTH 80,25.
CONSOLE 0,25,0,1
LOCATE 0,0
PRINT “HELLO WORLD”
宽80,25
“`

当然,那时,我只是打出了这样的代码。
解释器只显示了一个无机游标。
我找不到任何帮助。

可以这么说,写出一个程序是
今天还是这个样子,他真的是个无精打采的家伙。

那么,这就是今天的话题。
这要从一种新的编程语言、开发环境说起。
所以,节目先生,好像是在问候。
问候是很重要的。

不仅仅是在编程世界,在现实世界中也是如此。
如果一个问候语被理解了,对方就会以某种方式和你交谈。

哪怕你只是在不了解情况的情况下走到他们面前,也是如此。
那你会得到的,是一脸疑惑的表情,或者是一种
最坏的情况下,他们只是送你回去走人。

#过去的故事D,扯远了一点
我第一次去大学毕业旅行的时候,在美国的机场转机。
我把车票放在了我的行李

元記事を表示

How do I start writing out my program?

#Talk about writing out a program.

Talk about writing out my first program.
When I was a junior high school student, the first program I touched was N80-BASIC.
I won’t forget the starting cord, I still remember it, the following sentence was completely in my head.

“`Z80
N88-BASIC

WIDTH 80,25.
CONSOLE 0,25,0,1
LOCATE 0,0
PRINT “HELLO WORLD”
“`

Of course, in the old days of computer screens, there was nothing but a useless, inorganic cursor.

Writing out programs is still the same, and comp

元記事を表示

【AtCoder初心者向け】超ざっくり知りたい計算量の話

#はじめに
 このページは[AtCoder](https://atcoder.jp)を始めてAtCoder Beginner Contest(以下ABC)のA問題、B問題は解けるけど、C問題が難しい…と感じている主にPythonユーザー向けに作成しました。制約と計算量の考え方や、制約と計算量を踏まえて知っておくべき考え方を簡単にまとめました。

#そもそも計算量って何?
 何回かABCに参加したことがある方なら、**$O(N^2)$**や**$O(NlogN)$**といった計算量オーダーが書かれた解説を見たことがあるかもしれません。正直これが書かれてあっても、何が言いたいのかよく分からない、logがどこから来ているのかが分からない、という方が多いと思います。

この計算量オーダーという考え方は、競技プログラミング界で有名な**けんちょんさん**のページである[計算量オーダーの求め方を総整理! 〜 どこから log が出て来るか 〜](https://qiita.com/drken/items/872ebc3a2b5caaa4a0d0)から言葉を引用すると

>計算実行にどのくらいの時間

元記事を表示

Python を使い、Gmail API 経由で Gmail の送受信を行う

はじめに
======================
Gmail にはご存知の通りGmail API があり、SMTP や POP3 を使うことなく、検索機能など Gmail 独自の機能を活用することができます。
この記事では、Python を使って Gmail API の有効化から、スクリプトの作成、実行までの手順をステップバイステップで紹介します。

Gmail API を利用するまでに、プロジェクトを作成したり、APIを有効化したり、スコープを設定したり、認証情報を作成したりと、準備が割と大変なので、備忘録として書きました。

* 2020年4月時点の Gmail API の内容です。
* Python 3.7.x を想定しています。

利用前の準備
===============

Goole API を利用するプロジェクトを作成する
—————————————-

利用する Gmail アカウントの Gmail を開いたブラウザで、 Google Cloud Platform コンソール ( https://consol

元記事を表示

カレントディレクトリに対するコマンド Python

#カレントディレクトリに対するコマンド
全てosモジュールを使用するので

import os
を最初に打っておく。

– カレントディレクトリの取得

path = os.getcwd()
print(path)

– ディレクトリ内のフォルダやファイルの表示

ls = os.listdir(os.getcwd())
print(ls)

– ディレクトリの移動

os.chdir(“Desctop”) #移動はこれだけでOK
curdir = os.getcwd()
print(curdir)

– カレントディレクトリのディレクトリ名を取得

curdirname = os.path.basename(os.getcwd())
print(curdirname)

元記事を表示

【AtCoder解説】PythonでABC164のA, B, C問題を制する !

**AtCoder Beginners Contest 164**の**A,B,C問題**を**Python3**で解く方法を、なるべく丁寧に解説していきます。

ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。

– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、D問題に残せる時間が増える

# ABC164

開催日: 2020-04-26(日) 21:00 ~ 2020-04-26(日) 22:40 (100分)
A問題提出人数: 11236人

| パフォ | AC | 時間 | 順位 | 目安 |
| :—-: | :–: | :–: | :—-: | :————-: |
| 400 | ABC- | 29分 | 7198位 | 茶パフォ |
| 600 | ABC- | 18分 | 5854位 | 8回で茶色レート |
| 800 | ABC- | 12分 | 4425位

元記事を表示

Scipy optimizeで離散値を変数として使う方法

# 解決したいこと(モチベーション)
scipy optimizeを使って最適化したいものの、ものの個数など整数しか取らない変数を入力とするやり方がわからなかったので、その備忘録に

#解決策
scipy 公式の中に答えを見つけました。
https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.optimize.brute.html
scipy.optimize.brute (Minimize a function over a given range by brute force.)
Brute forceは無理やりにということであり、総当たり的に力づくで最適値を探すということですね

scipy.optimize.brute(func, ranges, args=(), Ns=20, full_output=0, finish=, disp=False)
という定義なのですが、このfinishは総当たり後にさらにその周辺を最適化するものなので、

元記事を表示

DiscordでMeCabで形態素解析した結果を返すだけのbotを作る

# 参考にした記事

* https://qiita.com/PinappleHunter/items/af4ccdbb04727437477f
* https://qiita.com/junpiiiiiiik/items/79c2219da6b5e2c06ed8

# 概要

掲題のとおりですが、

* Discord botを作る。
* 特定の文字列がメッセージに含まれたときに、MeCabで形態素解析した結果を返す。
* MeCabの辞書としてNEologdも使えるようにしておく。
* 処理言語はPythonを使う。
* heroku上で動作させる。
* herokuのContainer Registryを使ってDockerイメージをデプロイする。

“`sh
root@4c506a68cd26:~# python –version
Python 3.7.7
root@4c506a68cd26:~# mecab –version
mecab of 0.996
“`

# 準備

「参考にした記事」に倣うのみなので、割愛。

* https://qiita.com/junpi

元記事を表示

vtkThresholdのまとめ(随時更新)

# vtkThresholdとは

指定した範囲内の値を含む要素のみ抽出するフィルターです

**classリファレンス**
https://vtk.org/doc/nightly/html/classvtkThreshold.html

具体的には、次のparaviewでの例がわかりやすいです

# paraviewで機能の確認

計算例は`OpenFOAM`のtutorialの`pitzDaily`を用いました

### Threshold適用前

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132299/f5bccf49-c252-ba4c-eac8-e7d0129628ed.png)

計算結果を読みこんた後、このボタンを押します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132299/ec1d9673-5e2a-5d43-3eef-889f88436a25.png)

#

元記事を表示

やり忘れのBacklog課題を定期的にSlackに通知してみる

#きっかけ
いつも見るのはSlack。メールもBacklogもあまり見ない。
そしてBacklogで振られている課題を忘れてしまう。。
よし、毎朝Slackに対応していないBacklog課題を連絡するようにしよう。
Google Apps ScriptからBacklogのAPIで該当の課題一覧を引っ張ってきて、それをSlackに投げればいいかな。

# BacklogのAPIで課題情報を取得
Backlogの課題一覧取得方法は[公式の課題一覧の取得](https://developer.nulab.com/ja/docs/backlog/api/2/get-issue-list/#%E8%AA%B2%E9%A1%8C%E4%B8%80%E8%A6%A7%E3%81%AE%E5%8F%96%E5%BE%97)ページに載っているので参考にGASで取得してみます。
#### BacklogのAPIキー
おっと、その前にBacklogのAPIキーを取得していきます。
Backlogページの右上にある自分のアイコンをクリックしたメニューの中の **個人設定** をクリックし、左のメニューの **

元記事を表示

OTHERカテゴリの最新記事