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

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

MatplotLibでグラフ描画

import os
import sys
import time
import matplotlib.style
import matplotlib.pyplot as plot
import pyodbc
import pandas as pd
import LogFile
from datetime import datetime

if __name__ == ‘__main__’:
save_dir = r”C:\Users\f-kashiwagi\Desktop\kashiwagi\Graph” # ファイルを保存したいディレクトリ
imgFileName = “box_line.jpg”

# ログ出力 ———————————————-
LogFile.Write(“[PROGRAM -> START]”)
# ログ出力 ———————————————-

“””
DB接続情報
“””
server = ‘********

元記事を表示

現在開いているバッファのDjangoのテストをEmacsから実行する

s.elを使っているのでinstallしておく。

“`emacs-lisp
(use-package s :ensure t)
“`

関数

“`emacs-lisp
(require ‘s)

(defun our-django–get-project-root-directory ()
(locate-dominating-file buffer-file-name “manage.py”))

(defun our-django–get-run-test-command (file-name current-directory)
(format “python manage.py test %s”
(s-replace “/” “.”
(string-trim-right
(file-relative-name file-name current-directory)
“.py”))))

(defun our-django-test-single ()
(interactive)

元記事を表示

焼きなまし法と巡回セールスマン問題

以前、[グラフ理論の基礎](https://qiita.com/maskot1977/items/e1819b7a1053eb9f7d61)や[グラフ理論の基礎をmatplotlibアニメーションで](https://qiita.com/maskot1977/items/b55c6d1c85bcf0ec0d08)などの記事を書きましたが、グラフ理論の中でNP困難とされる難解な問題の一つである「巡回セールスマン問題」の近似解法として「焼きなまし法」(Simulated Annealing)を使った方法を試してみました。

# 巡回セールスマン問題

「巡回セールスマン問題(traveling salesman problem、TSP)は、頂点の集合と各頂点間の移動コストが与えられたとき、全ての頂点をちょうど一度ずつ巡り出発地に戻る巡回路のうちで総移動コストが最小のものを求める組合せ最適化問題です。

# 焼きなまし法

焼きなまし法(Simulated Annealing、SA)は、金属工学における「焼きなまし」から名前を取った大域的最適化問題を解く方法。局所解に落ちてもすぐに脱出できる

元記事を表示

Matplotlibを使ったグラフ描画する方法

# 概要
Matplotlibでのグラフの書き方を自分用の備忘録としてまとめる。

## とりあえず一つグラフを書きたいとき
横軸(x)と縦軸(y)を設定して、plt.plot(x, y)とするだけ。

“`とりあえず一つ描画.py
import matplotlib.pyplot as plt
import numpy

x = np.linspace(0, 10)
y = np.sin(x)
plt.plot(x, y)
plt.show()
“`
![matplotlib_base.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/339647/060e99b4-1b0e-31a8-174d-f1962bafe097.png)

## pltの引数
c : 色。”r”、”g”、”b”、”c”、”m”、”y”などでグラフの色を変えれる。
marker : マーカーの形を指定。”o”、”^”、”v”、”+”などがある。
lw : 線の太さを指定。線を消したいときは0にする。
alpha : 透

元記事を表示

「一番厨ニ臭いホトトギス詠んだ奴優勝」の中で元ネタと類似度が高い奴優勝

# 概要
だいぶ前に「一番厨ニ臭いホトトギス詠んだ奴優勝[^1]」というネタがありまして。
`哭かぬなら 虚無に誘え(いざなえ) 時鳥(ホトトギス)` とか
`哭け 我が漆黒の刄 炎斗闘斬(ホトトギス)` みたいなやつです。

どの作品も好きなんですが、この手のって元ネタとあまりかけ離れすぎていてもダメで、元ネタと似た形や意味を保ちつつも厨二感を漂わせるくらいが一番味があるんじゃないかなと思ってます。

そこで今回は、「厨二臭いホトトギス」と本家ホトトギス三句[^2]を**自然言語処理によって比較し、最も類似度が高いものを優勝とする決定戦**を開催することにしました。

![kids_chuunibyou_boy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/583240/08da6ac7-2c80-8aff-0fa5-8f49e2474a6f.png)
(図. コンテストイメージ)

[^1]: [まとめブログ](http://chaos2ch.com/archives/2804819.html)と

元記事を表示

使えるようになって(いて)欲しいプログラミング言語

# はじめに

私はすでに全く若手ではないのだが、個人的な意見として、また新たに入ってくる技術者に言っていることを書いてみる。勿論賛否あって良い。

何気に私はいわゆる組込み系の仕事をしているのだが、ソフトウェア・オリエンテッドであまり組込みっぽくない人種です。

# 使えるようになって(いて)欲しいプログラミング言語

概ね以下の3種類でそれぞれ1つずつ。

## システム記述系

こういう括りが正しいかは別として、C/C++、Java、C#など。

プログラムの動きとか、コンピューターの動きとか、きちんと知るにはCが最適。アセンブラとは言わない。アセンブラでもいいけど、プロセッサごとに違うしね。概念は知ってると良い。

ただ、Cを実務で使うのはどうしても必要でなければ避けたいのが本音。スキルの差がモロに品質に直結するので。

後、オブジェクト指向しづらいし。それができるというのとはまた別。C++は好きだが、仕様がカオスになりすぎて完全にマニアの世界。Javaはできると実務でも使えて、オブジェクト指向にも慣れるので良いかもしれない。

C#も簡単で分かりやすかった。Windowsでし

元記事を表示

独自例外クラス

“`py

#Exceptionを承継した独自例外クラス
class OriginalError(Exception):
pass

raise OriginalError(‘test’)
““

元記事を表示

例外処理

“`python:ex.py
l = [2,4,5,8]

try:
l[5]
except NameError as ex:
print(‘エラーメッセージ:’, ex)
except Exception as ex: #その他の例外をキャッチ(ただし、この使い方は推奨されない)
print(‘エラーメッセージ:’,ex)
else:
print(‘成功した時のみ実行されます’)
finally:
print(‘必ず実行されます’)
“`

元記事を表示

もしあなたがタイタニックに乗ったら…死ぬ。

# できたもの
![zwmew-57a83.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/287998/68d2f19b-c68c-8e81-0948-fb33381d0c7d.gif)

# なにやってるのか

1. モデルを作成
2. GCPにモデルをデプロイ
3. GCP上で予測

※ タイタニックの「年齢」「性別」を学習データとしています。
※ XGBoostで生存できるかの2クラス分類モデルを作っています。
※ GCPのAI-Platformにモデルをデプロイし予測します。

# GoogleColab
notebookにしましたので、もし
※ 2020/02/16 時点での情報及び動作確認となります。

https://colab.research.google.com/drive/1s6_o-nvMmHhAeBAOoRDgE0UNU6Fe3XrC

# 手順
notebookとほぼ同じ内容を記載しています。
Colabを開くのがめんどくさい方はこちらを御覧頂ければと思います。

元記事を表示

言語処理100本ノック-28:MediaWikiマークアップの除去

[言語処理100本ノック 2015](http://www.cl.ecei.tohoku.ac.jp/nlp100/)[「第3章: 正規表現」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#ch3)の[28本目「MediaWikiマークアップの除去」](http://www.cl.ecei.tohoku.ac.jp/nlp100/#sec28)記録です。今回でマークアップ除去系は終わりです。新しく覚える内容はなく、今まで習ったことを実践で使うノックです。

# 参考リンク

|リンク|備考|
|:–|:–|
|[028.MediaWikiマークアップの除去.ipynb](https://github.com/YoheiFukuhara/nlp100/blob/master/03.%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE/028.MediaWiki%E3%83%9E%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%83%E3%83%97%E3%81%AE%E9%99%A4%E5%8E%BB.ipyn

元記事を表示

Windows(VisualStudioCode remote WSL)でPythonの開発環境を作る。

https://www.youtube.com/watch?v=eiqXgj9EUnc

いちおうYoutubeで動画とともに詳しく解説!

# motivation
WindowsPCを再インストールしたので、新たに環境構築を行う事にした
今までPyCharmを使っていたが、出先でMacbookでも開発を行う時にはVSCodeを使っていたので環境統一させたい
なんとなくremote WSLを使ってみたい

ちなみに色々あってWSL2にしている。つまり OSは Windows10 ProのInsiderPreview

# Goal
今回のゴールは以前作ったPython Pyramidのサンプルを動かすところまで
https://github.com/YukiMiyatake/YukiMiyatakeWorks/tree/prj/Python/Pyramid/main

# Pythonの設定
## minicondaインストール
PythonにはAnacondaという、Pythonのバージョン管理システムがあるが
Anacondaは機械学習など非常に多くのパッケージが入っているので

元記事を表示

ABC155の振り返り

初めての投稿です。よろしくお願いします。練習もかねて昨日行われたABC155の振り返りをまとめてみます。できればこまめにatcoderの記録をつけて自分自身の理解と整理に繋げたいなと思っていますが、続く気はあんまりしていません。

今日のABCは3完に終わりました。
#A問題
###問題文
3つ組の数について、ある2つが等しく、残りの 1つがそれらと異なるとき、その3つ組を「かわいそう」であるといいます。3つの整数 A,B,Cが与えられるので、この3つ組がかわいそうであれば Yes を、そうでなければ No を出力してください。

###解答例

“`php
a = set(map(int, input().split()))
if len(a) == 2:
print(“Yes”)
else:
print(“No”)
“`

集合set()を使いその要素数を見ることでかわいそうかそうでないかを判定できる。

#B問題
###問題文
あなたは AtCoder 王国の入国審査官です。入国者の書類にはいくつかの整数が書かれており、あなたの仕事はこれらが条件を満たすか判定するこ

元記事を表示

ガウスカーネルをpythonでも爆速で計算する

# はじめに
ガウス過程等で計算が必要になるガウスカーネルをバク速で計算するコードを書きます.

# コード

高速化するためにNumbaで記述しました.Numbaによる制約でコード自体は若干冗長になるのが残念ですが,高速化の効果は絶大です.Numbaで高速化するために2乗を掛け算で記述する,numpyの関数を自分で定義した関数内で使わない等の制約がありました.

“`py
from numba import jit, void, f8
import numpy as np
import time

@jit(void(f8[:, :], f8[:, :]))
def gauss_gram_mat(x, K):
n_points = len(x)
n_dim = len(x[0])
b = 0
sgm = 0.2

for j in range(n_points):
for i in range(n_points):
for k in range(n_dim):
b = (x[i][k] – x[j][k]) / sgm

元記事を表示

AtCoder Beginner Contest 155 参戦メモ

# 結果
A〜Cは完答。
D以降は解けず。以前と同様D以降のわからなかった問題は解答/参考になりそうな記事を随時追記することにします。
自分の回答なので、最適ではない場合もありますがご了承ください。

# A問題
setによる重複の判定。
3つのうち、重複が2つあればYes, それ以外ならNoを返す。

“`python

ABC = list(map(int, input().split()))
if len(set(ABC)) == 2:
print(“Yes”)
else:
print(“No”)
“`

# B問題
各要素をiterationしながら、偶数であればあれば3または5の倍数かどうか判定する。

“`python
N = int(input())
A = list(map(int, input().split()))
ans = “APPROVED”
for a in A:
if a%2 ==0:
if a%3 == 0 or a%5 == 0:
continue
else:

元記事を表示

【Python Tips】辞書から最大値を持つkeyを取り出す方法

[ABC155 C – Poll](https://atcoder.jp/contests/abc155/tasks/abc155_c)で連想配列で解ける問題が出たが、表題の処理がうまく書けなかったのでメモ。

“`python:dic_max.py
# 適当に辞書初期化
d = {}
d[“k1”] = 10
d[“k2”] = 20
print(d)
# {‘k1’: 10, ‘k2’: 20}
“`

“`python:dic_max.py
# 辞書dのvalueの最大値を取り出す処理 -> max(d.values())
max_val = max(d.values())
print(d.values())
print(max(d.values()))
# dict_values([10, 20])
# 20

# これはエラー
# print(d.value[0])
# TypeError: ‘dict_values’ object does not support indexing
“`

“`python:dic_max.py
# keyとvalueをfor文

元記事を表示

[Edge2Imori] Epi.2 pix2pixにGradient Penaltyを加えると??

線を入力したらイモリの画像に変換する Edge2Imori を作るための奮闘記

前回記事
[pix2pix を応用して edge2imori を作ってみた](https://qiita.com/yoyoyo_/items/a6787f5af2013c8b59bf)

pix2pixを使用して作成した。

今回はWGAN-GPの Gradient-Penaltyを応用してみた。

# まずは画像の収集

iCrawlerを使用してイモリの画像を集めた。

[画像のクローリングはiCrawlerが最強だった話](https://qiita.com/yoyoyo_/items/218a93729804c6ecc060)

これでイモリの画像を630枚集めた。

# pix2pixにGradient Penaltyを追加

タイトルのまんまのことをした。

Gradient Penaltyは[WGAN-GP](https://arxiv.org/abs/1704.00028)で提案されたもので、勾配を1に近づける正則化の役割を果たす項である。

今回作成したコード >> https://

元記事を表示

内包表記

## リスト内包表記

“`py
l = []
for i in range(10):
if i % 2 == 0:
l.append(i)
print(l)
“`

同じことがリスト内包表記では下記のようになる

“`py
l = [i for i in range(10) if i % 2 ==0]
print(l)
“`

“`text:出力
[0, 2, 4, 6, 8]
“`

## 辞書内包表記

“`py
w = [‘Monday’, ‘Tuesday’,’Friday’]
f = [‘banana’, ‘apple’, ‘orange’]
d= {}
for x, y in zip(w,f):
d[x]=y
print(d)
“`

同じことが辞書内包表記では下記のようになる

“`py
w = [‘Monday’, ‘Tuesday’,’Friday’]
f = [‘banana’, ‘apple’, ‘orange’]
d = {x:y for x,y in zip(w,f)}
print(d)
“`

“`te

元記事を表示

初心者がAnaconda環境構築をするには。(メモ)

#目的
環境構築の理解を深めたい。(また環境構築にてこずったので)

今まではHomebrewを使っていたが都度必要なライブラリをインストールするのが手間なのでまとめてあるプラットフォームを使ってみたいなーと思った。

#今までの理解
大まかにはbrewを作り、その上にAnaconda、pip等でインストールしていくと理解していた。

##Homebrew,pip,Anaconda,pyenv,venvって何?

– **Homebrew**: **Mac OS Xオペレーティングシステム上で**ソフトウェアの導入を管理するパッケージマネージャー。
これが**一番の土台**となると理解。

– **pyenv**:Pythonのバージョン管理を行う。簡単に切り替えができるためpyenvを通してPythonをインストールする。詳しくは以下。
「初心者でも分かる仮想環境構築」
https://qiita.com/Taka20200105/items/20cebb42a20301203d2e

– **pip**: **Pythonのパッケージマネージャー**。通常、パッケージはpipコマ

元記事を表示

Vtuberはポジティブなのか?ネガティブなのか?

# はじめに
Vtuberはポジティブな人が多いのでしょうか?ネガティブな人が多いのでしょうか。
今回はVtuberのツイートを感情分析し、ポジティブ度を測ってみました。

結果として、[名取さな](https://twitter.com/sana_natori)はポジティブであるということがわかりました。

“`
[(‘Neutral’, 31), (‘Positive’, 12), (‘Negative’, 7)]
1.7142857142857142
ちょっとポジティブです
“`

他にも、[DWU](https://twitter.com/D_W_Underground)や[マシーナリーとも子](https://twitter.com/barzam154__)のツイートも分析しました。

# 使用するもの
– [tweepy](https://www.tweepy.org/)
– [COTOHA API](https://api.ce-cotoha.com/)

## COTOHA APIの紹介
今回は[COTOHA API](https://api.ce-cotoha.c

元記事を表示

AtCoder Beginner Contest 155 参戦記

# AtCoder Beginner Contest 155 参戦記

## ABC155A – Poor

2分で突破. 書くだけ. 前回に引き続き、set での重複判定.

“`python
ABC = list(map(int, input().split()))

if len(set(ABC)) == 2:
print(‘Yes’)
else:
print(‘No’)
“`

## ABC155B – Papers, Please

2分半で突破. 書くだけ.

“`python
N = int(input())
A = list(map(int, input().split()))

for a in A:
if a % 2 == 1:
continue
if a % 3 == 0 or a % 5 == 0:
continue
print(‘DENIED’)
exit()
print(‘APPROVED’)
“`

## ABC155C – Poll

8分半で突破. 書くだけ……とい

元記事を表示

OTHERカテゴリの最新記事