Python関連のことを調べてみた2019年11月18日

Python関連のことを調べてみた2019年11月18日

【初心者向け】無料でPythonの基本文法を5時間で学ぼう!

## はじめに
この記事は、AI AcademyのPython[文法速習編](https://aiacademy.jp/texts/#grammar)と[Python プログラミング入門編](https://aiacademy.jp/texts/#python)の内容をベースに一部修正を加えたものです。
この記事を読み進めることで、Pythonの基本文法の基礎を学ぶことが出来ます。
Pythonを学び終わった方は、無料(一部のコンテンツのみ有料だが基礎コンテンツはほぼ全て無料)でAI・機械学習が学べる[AI Academy](https://aiacademy.jp/texts/)も活用ください。
※個人向け短期AIブートキャンプは[こちら](https://aiacademy.jp/bootcamp/)

## なぜPythonなのか?

**[AI Academy](https://aiacademy.jp/)では人工知能(AI)分野を中心とした学習コンテンツを扱っており、その人工知能分野においてPythonは機械学習・ディープラーニングを容易に扱うことができるからです。**
また

元記事を表示

SVMをJupyter Notebook上のscikit-learnで試す

線形のSVM(サポートベクターマシン)は、特徴空間を線形分離して分類する機械学習のモデルです。線形に分離できないような場合には、カーネル法を使ったSVNにより非線形に分離できます。

いままでカーネル法というのがよくわかっていなかったのですが、以下の記事が非常にわかりやすかったです。

[機械学習におけるカーネル法について – めもめも](http://enakai00.hatenablog.com/entry/2017/10/13/145337)

これ以降は、以下の記事に従って準備したJupyter Notebookの環境で試しています。
[Jupyter NotebookをDockerを使って簡単にインストールし起動(nbextensions、Scalaにも対応) – Qiita](https://qiita.com/suzuki-navi/items/37615024d4748aac6688)

この環境でブラウザで8888番ポートにアクセスして、Jupyter Notebookを使うことができます。右上のボタンのNew > Python3をたどると新しいノートを開けます。

元記事を表示

Heroku SchedulerでPythonを定期実行する

# Heroku SchedulerでPythonを定期実行する

– [Heroku SchedulerでPythonを定期実行する](#heroku-scheduler%e3%81%a7python%e3%82%92%e5%ae%9a%e6%9c%9f%e5%ae%9f%e8%a1%8c%e3%81%99%e3%82%8b)
– [はじめに](#%e3%81%af%e3%81%98%e3%82%81%e3%81%ab)
– [目的](#%e7%9b%ae%e7%9a%84)
– [関連する記事](#%e9%96%a2%e9%80%a3%e3%81%99%e3%82%8b%e8%a8%98%e4%ba%8b)
– [実行環境](#%e5%ae%9f%e8%a1%8c%e7%92%b0%e5%a2%83)
– [ソースコード](#%e3%82%bd%e3%83%bc%e3%82%b9%e3%82%b3%e3%83%bc%e3%83%89)
– [シナリオと前提条件](#%e3%82%b7%e3%83%8a%e3%83%aa%e3%82%aa%e3

元記事を表示

LINE NotifyをPythonでお試し

[LINE Notify](https://notify-bot.line.me/ja/)は、外部のWebサービスと連携させて、そこからのメッセージをLINEのトークルームで受信できる通知機能です。
指定されたLINE NotifyのURLにメッセージを投げる(POSTする)ことで自分のLINEのトークルームにそのメッセージを送ることができるので、自分でプログラムを書いて利用することも簡単。ということで、Pythonで試してみよう。(既にほぼ同内容の記事がありますが、自分の備忘録ということで。。。)

# 1. LINE Notifyの初期設定
1. 上のページから自分のLINE IDでログイン
2. 右上の自分の名前のところからマイページにアクセス
3. 「アクセストークンの発行(開発者向け)」から「トークンを発行する」を選ぶ
LINEnotify1.pngPythonで学習したこと

#progateでpythonを学習
##学習コースⅡ
リスト要素の更新は
**リスト[インデックス番号] = 値**
新しい要素の追加は
**リスト.append(値)**
すでに定義されているリストの末尾に追加される

**for文**
リストの要素を順に取り出して処理できる
**for 変数名 in リスト:** と書く
処理はリストの数だけ
変数名は自由、リスト名の単数形にすることが慣習上多い

**辞書**
複数のデータをまとめて管理する
リストとの違いは個々の要素をインデックス番号ではなくキーと呼ばれる名前を付けて管理する点
**{キー1: 値1, キー2: 値2, …}**このように書く
辞書内の要素には順序がない
辞書の値を取り出すには、取り出したい値に対応する「キー」を用いて辞書名[キー]のように書く
辞書の要素の更新と追加は
*更新* 辞書名[キー名] = 値
*追加* 辞書名[新しいキー名] = 値

元記事を表示

変数の中身から名前

# pythonで変数の中身から変数名を出す

はい。TSUMUGIです。初投稿。

変数の中身から変数名を出すよ!
あんまりいらないとか言わないでね>< ```python:cn.py a = "8" print(list(globals().keys())[list(globals().values()).index("8")]) #a ``` はい。分かりにくいですね。 知 っ て た 分かりやすく。 ```python:cn1.py a = "8" global_list_keys = list(globals().keys()) #global変数全ての変数名をリストにしてる。 global_list_values = list(globals().values()) #global変数全ての変数の中身をリストにしてる global_list_value_index = global_list_values.index("8") #global_list_valuesの中の"8"っていう文字列のインデックス番号調べてる cn_value = global

元記事を表示

flask入門その2:データフレームをスタイルシートで見栄えよく表示

# 環境
Mac、ローカル

# おしゃれなスタイルシートを拾ってきてそのまま適用できないかと目論んだが、だめだった
http://www.htmlandcssbook.com/extras/table-styles/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237551/5a346985-b3d9-dc4f-df13-546c1563c181.png)

なぜか?このスタイルシートが想定している構造(例えば下図)と
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/237551/ed06f3a0-823f-674d-fab1-2244f06052be.png)

pd.DataFrame.to_html()で吐き出される構造とは違うからでる

# to_html()で吐き出される構造とJupyterっぽく表示できるところまで
非常に分かりやすいのがあった。まじでここに全部書いてあるので

元記事を表示

PythonとJavaScriptの真偽性の違い

ごっちゃになるのでメモ✍

# Python

“`Python
In [1]: True if “” else False
Out[1]: False

In [2]: True if [] else False
Out[2]: False

In [3]: True if {} else False
Out[3]: False
“`

# JavaScript

“`JavaScript
“” ? true : false;
false

[] ? true : false;
true

{} ? true : false;
VM1052:1 Uncaught SyntaxError: Unexpected token ‘?’
// ファッ!?
// …だったら↓
obj = {};
{}
obj ? true : false;
true
“`

JSのオブジェクトはなんでSyntaxエラーになったのか知らん!!
メモ記事なので後日別に調べます。

元記事を表示

Python3のメタクラスメモ

# Python3のメタクラスメモ

Python初心者がPython3のメタクラスについて学んだことのメモ
コード内のコメントはコンソールの出力結果を意図しています。
誤りや不適正な表現があればご指摘いただけると幸いです。

## メタクラスとは
あるインスタンスがどのクラス型かを調べる場合、type()を利用することができる。

“`python:qiita.rb
class Hoge:
pass
h = Hoge()
print(type(h))
#
“`

Hogeクラスにもtype()を適用してみる。

“`python:qiita.rb
print(type(Hoge))
#
“`
これはHogeクラス自体がtype型のインスタンスであることを示している。hがHogeクラスのインスタンスであると同様に、Hogeクラスもまたtypeクラスのインスタンスということになる。***Python3で定義されたクラスは、typeという特殊なクラス(メタクラス)のインスタンスになる。***通常で

元記事を表示

【Python】うるう年を判定する

#初学者が押さえるべきポイントが網羅

初学者が書くプログラムとして
3の倍数、5の倍数を出力するfizzbuzz問題をよく見かけますが、
if文、変数、比較演算子、型など初学者がまず学ぶのに
より実践的・実用的なプログラムとして、うるう年の判定はぴったりだと思います。

“`python:leap.py
year_str = input(“西暦4桁を入力”)
year = int(year_str)

if year % 100 == 0 and year % 400 != 0:
print(“平年です”)
elif year % 4 == 0:
print(“うるう年です”)
else:
print(“平年です”)
“`
あとPythonはインデントに要注意ですね。

元記事を表示

【Python】対戦と組み合わせを出力する(for文のネストとif文)

Pythonでfor文のネストとif文を使って
プロ野球の対戦の組み合わせを出力してみました。

#ホーム、ビジターの概念がある場合

プロ野球ではたいていの場合
ヤクルト 対 阪神
という表記だと、先に表記されている
ヤクルトの本拠地(明治神宮野球場)での開催を指すことが多いです。

(例)
ヤクルト 対 阪神(神宮球場)
ホーム:ヤクルト、ビジター:阪神

阪神 対 ヤクルト(甲子園)
ホーム:阪神、ビジター:ヤクルト

この場合の対戦の組み合わせをPythonを使って表記すると以下のようになります。

“`python
#ホーム、ビジターの概念がある場合

team = [“ヤクルト”,”阪神”,”横浜”,”中日”,”広島”,”巨人”]

for vs_01 in team:
for vs_02 in team:

#ただし、ヤクルト 対 ヤクルト というような同チームの対戦を除く
if vs_01 != vs_02:

print(vs_01+ ” vs ” + vs_02)
“`
ヤクルト vs 阪神
ヤクル

元記事を表示

Pythonでつくる彼女入門 ~Tinder自動化プロジェクト~ 第5話

||やったこと|主な出来事|
|—|—|—|
|[第1話][ep.1]|[自動右スワイプ][ep.1]|
|[第2話][ep.2]|[自動メッセージ送信][ep.2]|女性とマッチした|
|[第3話][ep.3]|[ライブラリ化][ep.3]|マッチした女性とLINEを交換した|
|[第3.5話][ep.3.5]|[アクセストークンの再取得][ep.3.5]|これまでのコードではトークンが取得できなくなっていた|
|[第4話][ep.4]|[データ収集][ep.4]|LINEの返信が来なくなった|
|[第5話][ep.5]|[データ分析 プロフィール文編][ep.5]|仲良くなった人から情報商材を勧められた
コードは[GitHub][git]から閲覧できます。

[ep.1]: https://qiita.com/Fulltea/items/fe4d4214552476c28e88
[ep.2]: https://qiita.com/Fulltea/items/4083c75f74e8a78a797b
[ep.3]: https://qiita.com/Fulltea/i

元記事を表示

[完全自動接続]Colaboratoryファイルのみで90分・12時間問題を解決した[Selenium使用]

みなさんGoogle Colaboratory使っていますか?最高ですよね。
Google Colaboratory はブラウザ上で動作するJupyter notebook環境です。しかもGPU,TPUマシンが無料で使えます。最高ですねえ。

ただ、利用時間についてのルールが2つ(後述)あり, Colaboratoryユーザーを萎え萎えさせるハマりどころでもありました。

**「朝起きたらいつのまにか接続が切れてやがる。。。」**

**「12時間たってリセット(強制接続切れ)されたから、また立ち上げ直さないとなあ。」**

**「90分問題回避のために, ローカルでスクリプト動かし続けるのもなんだかなあ。」**

こんなモヤモヤが少なからずみなさんにもあったのではないでしょうか。

数多のColaboratoryユーザーがこういった問題に対して対策を共有してくれています。

[先駆者の方々の記事まとめ](https://qiita.com/Ningensei848/items/a7daa6ee4ef692a3d65e#%E5%8F%82%E8%80%83%E6%96%87%E7%8

元記事を表示

OpenCVを用いて、Jupyter Notebook上で画像を表示させたい(mac)

### python初心者のための画像分析
失敗した内容、改善出来た内容などを、初心者の観点から記録します。

今回は、Anacondaから立ち上げたJupyter Notebook上で
OpenCVを用いて画像を表示する際に、エラーになった内容。(下記画像は、成功例)
![jupyternotebook_shimarisu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/462073/17282ef0-a2b1-6640-13f3-a04fbb9c3983.png)

また、画質が表示された時、解像度が落ちていたので、改善方法を模索しています。
(どなたか分かる方がいらっしゃいましたら、ご教授下さい。。。)

### 条件
・macOS 使用
・Anaconda上のJupyter Notebookで表示させたい
・Python 3.7 を使用
・OpenCV 4.1.1 を使用
・matplotlib を使用
・画像(shimarisu.jpg)は、macのDesktop上のフォルダに格納
 /

元記事を表示

【AmazonLinux】Python2系からPython3系への切り替え

# 環境
AMI: Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type

# コマンド

“`console
$ sudo yum install python36
$ python3 –version
$ sudo yum install git
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ emacs ~/.bash_profile
$ source ~/.bash_profile
$ sudo yum install zlib1g-dev
$ sudo yum install libssl-dev
$ sudo yum install gcc zlib-devel bzip2 bzip2-devel readline readline-devel sqlite sqlite-devel openssl openssl-devel -y
$ pyenv install 3.6.8

元記事を表示

Pythonのインデックスとスライスについてのまとめ

# はじめに
何番煎じかわからないが、自分で体験して自分の言葉で書くのが大事だ。

# インデックス(特に文字列に対して)
普通に文字列を定義するだけで、一文字ずつ格納された一次元配列のように扱うことができる。

“`Python:
letters=”ABCDEFG”

# (0から数えて)3番めは?
letters[3] # ‘D’
“`

マイナスを使って後ろからカウントすることもできる。
正順のときは0からカウントするが、後ろからの場合は最後は-1。-0ではない。当然か。

“`Python:
# 後ろから2番めは?
letters[-2] # ‘F’
“`

文字列を一次元配列として一文字ずつ取り出すこともできる。

“`Python:ソース
for letter in letters:
print (letter)
“`

“`Python:結果
A
B
C
D
E
F
G
“`

今回の趣旨からは離れるが、enumerate関数を覚えておくと便利。インデックスと要素を同時に取得することができる。
これを使わなくても同等の結果を得ることは難しくない。可

元記事を表示

Heroku + Selenium + ChromeでWEBプロセスを自動化する

# Heroku + Selenium + ChromeでWEBプロセスを自動化する

– [Heroku + Selenium + ChromeでWEBプロセスを自動化する](#heroku–selenium–chrome%e3%81%a7web%e3%83%97%e3%83%ad%e3%82%bb%e3%82%b9%e3%82%92%e8%87%aa%e5%8b%95%e5%8c%96%e3%81%99%e3%82%8b)
– [はじめに](#%e3%81%af%e3%81%98%e3%82%81%e3%81%ab)
– [目的](#%e7%9b%ae%e7%9a%84)
– [関連する記事](#%e9%96%a2%e9%80%a3%e3%81%99%e3%82%8b%e8%a8%98%e4%ba%8b)
– [実行環境](#%e5%ae%9f%e8%a1%8c%e7%92%b0%e5%a2%83)
– [ソースコード](#%e3%82%bd%e3%83%bc%e3%82%b9%e3%82%b3%e3%83%bc%e3%83%89)

元記事を表示

Python:クラスについての覚え書き1「抽象度」

#概要:部品の使い方から、組み合わせ方へ
単にプログラムの断片を利用するだけでなく、それらを組み合わせたプログラムの実装に向けて学習を進めていく。

#現状
あれがやりたい、これがやりたいというちょっとした思いつきについては、豊富なライブラリと解説のおかげで何とか実現できるようになりました。一方で、じゃあそれらを組合わせて一つのプログラムを作ろうかとなると、どうしても全体がごちゃごちゃしてしまい、やがて手がつけられなくなってしまいます。

よって、ここではクラスについて学んだことを整理し、「自分で拡張・メンテンナスできるプログラム」を作ることを目的として諸事項をまとめていきます。まだまだ初学者の枠を抜けられないプログラマーなので、アドバイスは大歓迎です。

#クラスの抽象度
###抽象度は適切に設定する
プログラムにおいて、名前付けは重要です。適当な名前をつけてしまうと理解・認識を阻害してしまいます。よって、全体がどうなっているかをしっかりと把握するためには、抽象度を状況に応じて決定しなければなりません。

###抽象度
「Python クラス 抽象度」など検索をかけると、メタクラスの

元記事を表示

ゼロから作るDeep Learningで素人がつまずいたことメモ:2章

#はじめに
ふと思い立って勉強を始めた[「ゼロから作るDeep LearningーーPythonで学ぶディープラーニングの理論と実装」](https://www.oreilly.co.jp/books/9784873117584/)の2章で私がつまずいたことのメモです。

実行環境はmacOS Mojave + Anaconda 2019.10です。詳細は[このメモの1章](https://qiita.com/segavvy/items/1945aa1a0f91a1473555)をご参照ください。

#2章 パーセプトロン
この章はパーセプトロンの説明です。

#2.1 パーセプトロンとは
特につまずくところはなかったのですが、なぜニューロンと呼ぶのか?などの背景がもう少しあった方が丸暗記するより面白いかと思いましたので、わかる範囲で少し補足してみます。

1943年に神経生理学者・外科医のマカロックさんと論理学者・数学者のピッツさんがタッグを組み、脳の神経細胞をコンピューターで実現するモデルを考えました[^1]。脳の仕組みを調べてコンピューターでマネすれば、ヒトと同じように思考できる

元記事を表示

時系列データと過学習について

最近LGBMの過学習をどう防ぐかが自分の中のホットトピックスです。

時系列データをどうtrainデータとvalidデータを分けるかについて気付きがありました。

これまで、時系列データであっても、random splitの方が良いんじゃないかと思ってました。
理由は分かりやすくいうと、ある日時を閾値にして分けると、春夏秋のtrainデータは冬の情報を持たずに学習するから不完全なモデルになるのではないかと。

ただ、random splitにも問題があることが分かった。
datetimeの粒度にもよりますが、例えばvalidデータの直前1分のデータがtrainデータにあるっていうことになるので、めちゃくちゃ過学習しやすい。

今の自分なりのベストプラクティスは、年の場合は春夏秋冬の四分割し、validをどれにするかで4パターンのmodelを作る。四つのモデルが出した予測値の平均を取る。

====

というメモを二週間ほど前に書いてたのですが、
以下の記事に自分の考えと全く同じことがまとまってたので、共有です!!

http://tmitani-tky.hatenablog.com/e

元記事を表示

OTHERカテゴリの最新記事