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

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

Djangoでwebサービスを作ってみた振り返り1

Djangoでwebサービスを作ってみました。完成はしましたが、ふんわりやっていたところをキッチリカッチリさせていこうと思います。

#models.pyで使ったあれこれ
例:

“`
class Profile(models.Model):
~~フィールド定義省略~~

@receiver(post_save, sender=User)
def create_profile(sender, **kwargs):
if kwargs[‘created’]:
user_profile = Profile.objects.get_or_create(user=kwargs[‘instance’])

def __str__(self):
return str(self.user)
“`
##@receiver
@receiverはシグナルというもので、イベントが発生したタイミングで登録した処理を呼び出す機能。
この例で使われたpost_saveは、senderで指定したモデル(ここではUser)に対するレコードの 追加 or 変更 をした 直後に実行されること

元記事を表示

MacでJupiter notebook使おうとするとpython2しか選択できない件

## 環境

MacOS Catalina 10.15.1

## 状況

元々Macにはpython2が標準で入っていて今までそこまで気にしないでpython3のコードを書いていたのですが、jupyter notebookを先日使おうとした時にjupyter notebook内で新しくファイルを作ろうとするとpython2しか選択できず困ったなーという感じでした。調べたところ案外簡単に直せるみたいなのでまとめておきます

## 直し方

まずはipykernelをインストールします

“`
python3 -m pip install ipykernel
“`

そして次のコマンドを実行します

“`
python3 -m IPython kernelspec install-self
“`

これだけで解決しました

## 余談

この直し方を調べてる途中でMacのpythonを標準でpython3に変える方法も見つけたので、まとめておきます。

まずはpyenvをインストールします

“`
brew install pyenv
“`

次に

“`
cat

元記事を表示

Qiitaのスパム狩りをしたらAutoMLに仕事を奪われた件

ある日の真夜中。ぼんやりとQiitaを眺めていたらこんな記事に遭遇した。

Before

知っている人は知っていると思うが、Qiitaではたびたび大量のスパム記事が投稿されている。

深夜24~26時頃に[記事一覧](https://qiita.com/items)を確認してみて欲しい。
スパム記事がわんさか出てくるはず。

登録したてのQiitaユーザは不安よな。[^1]
———— @dcm_chida 動きます?

[^1]: おそらく小中学生のユーザもいるだろうし

## はじめに

これは[NTTドコモサービスイノベーション部AdventCalendar2019](https://qiita.com/advent-calendar/2019/nt

元記事を表示

homebrew, pyenv, anaconda, Jupyter Notebook

# 環境

– macOS Catalina (10.15.1)
– MacBook Pro(13-inch, 2016)

# 概要

– Homebrewインストール
– pyenvインストール
– Anacondaインストール
– (仮想環境構築はあきらめた)
– Jupyter Notebook起動

# 手順詳細

### 1. Homebrewのインストール

“`shell:terminal
$ /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
“`

### 2. Homebrew環境のアップデート

一応したけど、Already up-to-dateといわれた。

### 3. pyenvのインストール

“`shell:terminal
$ brew install pyenv
$ echo ‘eval “$(pyenv init -)”‘ >> ~/.zshrc

$ exec $SHELL -l
`

元記事を表示

Word2Vecで自由入力対応のチャットボットをつくる

この記事は[Zeals Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zeals)の1日目の記事です。
はじめまして。Zealsに来年度から入社予定の玉城です。
Zealsはチャットコマースと呼ばれる、チャットボットの技術を用いた事業を行っております。また私は現在大学で自然言語処理を使った研究をしています。
ボットには自然言語処理を導入していない会話があるのですが、そこに自然言語処理の技術を加えてみても面白いのではないかと考えたので、今回記事のテーマにすることにしました。

# Word2Vecとは
ものすごく簡単に言うと、単語をベクトル表現に置き換え、ニューラルネットワークを使って学習を行うことで、単語同士の類似度や、単語同士の足し算引き算が出来るようになる技術です。
(曖昧すぎてマサカリ飛んできそう)
その類似度や足し算引き算の機能をチャットボットに組み込んでみよう!というのが今回のお話です。

# 作成するチャットボット会話の流れ
チャットボットでの会話は、ユーザーからヒアリングを行い、それをもとにベス

元記事を表示

Windows+gVim+Poetryのpython開発環境構築

# 目標
Windows+gVim+Poetryで開発をするときに、ライブラリのコード補完やリンターが効くような環境を構築する。

# gVimインストール
* [kaoriyaサイトのダウンロードページ](https://www.kaoriya.net/software/vim/])からダウンロード

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33407/976b3cab-7210-baa3-8dff-5034f32c8afc.png)

* ダウンロードしたzipを展開し、gvim.exeがあるフォルダをPATHに追加する。

# git for windowsのインストール
* [git for windows公式サイト](https://gitforwindows.org/)からダウンロード

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33407/dc36342f-6f56

元記事を表示

ubuntuにpyenv環境を一発で建てるshellscript

# 結論
非常に使う機会の多い、pyenv環境でのpython。
その導入を自動化するための簡易なスクリプトです。
shファイルにまとめられた形式の記事が意外と見当たらなかったので、自分用も兼ねて投稿。
早速スクリプト本体を載せます。ただし…

**※注意※**
`$ source pyenv_setup.sh`で実行しましょう。
– `sh` とか `./` ではダメです。script内で実行しているsourceが上手く機能せず、pyenvのpathが通りません。
– 理由についてはこちらの[他記事様](https://qiita.com/YumaInaura/items/00437e6ab14d96adb71f#-source-%E3%81%A8–bash-%E3%81%AE%E9%81%95%E3%81%84)をご参照下さい。

“`pyenv_setup.sh
# 依存モジュールの導入
sudo apt install -y build-essential libffi-dev libssl-dev zlib1g-dev libbz2-dev libreadline-d

元記事を表示

IQ1なのでハイパラ探索をしたくない(lightgbm_tunerの使い方)

この記事は[IQ1の2枚目っ Advent Calendar 2019](https://adventar.org/calendars/4711)に投稿されています.

# IQ1の機械学習
機械学習をするためにはデータの前処理とモデルのハイパラ探索は避けて通れません.でもIQが1なのでデータの前処理もハイパラ探索もできればやりたくないです.
データの前処理はこのご時世勾配ブースティング木系のアルゴリズム(lightgbmとか)に入れてあげれば欠損値も一応そのまま扱えるしカテゴリ変数の前処理をしなくて済むので比較的IQ1にも優しい世界になりました.
一方でハイパラ探索はIQ1には難しすぎます.モデルのハイパラがそれぞれどういうものでどれくらいの範囲を探索すればいいのかが分かっていないといけないので非常に困難です.

# lightgbm_tuner
最近optunaがlightgbmのハイパラ探索を自動化するために`optuna.integration.lightgbm_tuner`というモジュールを公開しました.このモジュールは色んな理由でIQ1にも優しいです.
1. ハイパラの探索

元記事を表示

[Python備忘録] While文の1回目が異常に遅い

While文に入るときの初回って以上に遅いんですね…オーダーが数桁違います…1~100マイクロ秒は決して無視できない(こともたまにあるの)です…

“`python
import time

now=time.perf_counter()
print(now)
print(“1: “,time.perf_counter()-now)
now=time.perf_counter()
i=0
print(“2: “,time.perf_counter()-now)
now=time.perf_counter()
while(True):
print(“3: “,time.perf_counter()-now)
i+=1
now=time.perf_counter()
if i>10:
break
“`

サーバにて強めのCPUで回した結果

“`
3038070.24794605
1: 0.00013073207810521126
2: 4.219589754939079e-05
3:

元記事を表示

numpy二次配列に対するindexingの計算速度

numpyの二次配列があって、次のように行と列をindexingすることを考えます。
(下図では6×6の二次配列から[[9, 12], [21, 24]]を取り出そうとしています)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118119/f21086e6-d4a0-7120-09e8-920fcdbdd612.png)

このとき、計算方法によっては速度にかなりの差がでました!

“`python
# 巨大な二次配列からランダムな行、列の要素を抽出する
import numpy as np

N = 10000
X = np.arange(N ** 2).reshape(N, N)

M = 100
a = np.random.choice(N, M)
b = np.random.choice(N, M)

%timeit Y1 = X[a][:, b]
# 実行例) 1.09 ms ± 243 µs per loop (mean ± std. dev. of 7 runs,

元記事を表示

re.subを使った高度な文字列置換

# 目次
– [結論](#結論)
– [re.subとは](#resubとは)
– [どういう時に使う](#どういう時に使う)
– [置換対象 repl に文字列を渡す](#置換対象-repl-に関数を渡す)
– [解説](#解説)
– [高度な置換とは](#高度な置換とは)
– [置換対象 repl に関数を渡す](#置換対象-repl-に関数を渡す)
– [置換対象 repl に引数が2つ以上の関数を渡す](#置換対象-repl-に引数が2つ以上の関数を渡す)
– [高度な文字列置換の例](#高度な文字列置換の例)
– [【補足】re.subを使わずに高度な文字列置換を行う方法](#補足resubを使わずに高度な文字列置換を行う方法)

# 結論
– re.subの置換対象 replには関数を渡すことができる
– re.subの置換対象 replには`2つ以上引数を持つ関数を渡す`ことができる
– re.subの置換対象 replに2つ以上引数を持つ関数を渡す時には、`lambda式でラップする`必要がある

# re.subとは

– [6.2. r

元記事を表示

言語処理100本ノックの解答と感想-前編

advent calendar初日だが特別感なく書きやすいものを書く
## これは
[言語処理100本ノック](http://www.cl.ecei.tohoku.ac.jp/nlp100/)を解いたので解答と感想を1問ずつ書いていくもの(現在11/30 PM20:30なので書けるところまでが前編)

## 前提条件
– 環境
– [Dockerfileのリンク](https://github.com/sh05/training/blob/master/docker/Dockerfile)(関係ないのも入ってる)
– 実力
– mecab, gensimくらいはなにもわからず触ったことがある
– 解き方
– とりあえず自力で解き、10問ごとに不安だったところをググって確認した
– ので、2通りの答えを載せる部分もある
– 言い訳
– まとめている途中で気づいた誤答の訂正が間に合っていない
– 感謝
– こういった教材を公開していただけるのは独学で闇の中を進む者としてはとてもありがたいです

## 反省
この記事を描くために自分でコ

元記事を表示

[TensorFlow]勾配降下法(最急降下法)による最小2乗線形回帰

# TensorFlow:最初のステップ

> TensorFlowとは機械学習のアルゴリズムを実装して実行するための、スケーラブルなマルチプラットフォームのプログラミングインターフェースである……..

簡単にまとめると計算グラフと呼ばれる処理フローを作成して、実行するPackageらしい。
PyTorchとかKerasとかも追いついてきてるけど、依然としてTensorFlowの人気が高い。

![キャプチャ.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/542096/6221f54a-e98b-64bd-ce87-0ffc9335e64e.jpeg)

Kerasに比べるとデバッグしずらいし、分かりずらい。
実際上記の指摘も多くあってか、シンプルにかけるTensorFlow2.0をリリースした模様。

この記事では初期のTensorFlowの文法を使って記載していく。
TensorFlow2.0入れちゃったよという場合でも安心。以下のコードでコンバートできる….!

“`python

元記事を表示

ROSユーザーのためのconda環境構築

最近流行りの機械学習なんかをやりたいとき、Pythonで環境構築って大変ですよね。
ローカルの環境も汚れますし…。
コードを動かしながら機械学習を学べる教材などではAnacondaやMinicondaを使っているものをよく見ます。
そしてこれらの環境を作るとき、ROSユーザーは割と困ることが多いんですが、意外と記事が少なかったりするのでここに残すことにしました。環境は以下のとおりです。

– Ubuntu18.04
– Python3.6
– Miniconda

## Minicondaのインストール
[ここ](https://docs.conda.io/en/latest/miniconda.html)からPython3.7の64bit版をダウンロード

“`
$ cd ~/Downloads
$ bash Miniconda3-latest-Linux-x86_64.sh
“`

上のコマンドを実行し、端末の指示にしたがってインストールを進めます。
最後に “`conda init“`を実行するか聞かれるので、yesと答えれば環境構築は終了となります。

正常にインス

元記事を表示

DjangoでLaravelライクなORM/クエリビルダのOratorを使う方法

この投稿は [「Django Advent Calendar 2019 – Qiita」](https://qiita.com/advent-calendar/2019/django) の0日目の記事です。(勝手に)(怒られそう)(怒られたら消します)

さてみなさん、Pythonでウェブアプリを作った時に、DBアクセスはどのようなライブラリを使っていますか?最もポピュラーなものはDjangoORMだと思います。FlaskやPyramidを使っている人はSQLAlchemyという選択肢が多いしょう。データサイエンス畑の人はPandasのDataFrameを使っているかもしれません。しかし私が最も推しているライブラリは、表題にある「Orator」です。ここQiitaでもOratorについて書かれた記事が既にいくつかあります。

[「Orator」を触ってみたのでメモ](https://qiita.com/subarunari/items/3471f8591991689b4a86)
[Scrapy でスクレイピングしたデータを ORM で RDB に保存する](https://qiit

元記事を表示

OneHotEndoderで冗長なダミー変数を減らす

#はじめに
scikit-learnのOneHotEncoderをそのまま使うと、カテゴリ変数の水準数分だけダミー変数が作られる。この場合、線形回帰手法などでは多重共線性が生じるため、ダミー変数を水準数-1に減らしたい。その方法を調べたのでメモっておく。

#環境
– scikit-learn 0.21.2

#方法
OneHotEncoderのdropオプションを”first”にすると、最初のダミー変数を除去してくれる

#やってみよう
ここでは以下のようなカテゴリ変数が格納された列を抽出してカテゴリ変数にしてみよう。

“`
[[‘D’]
[‘D’]
[‘D’]
[‘T’]
[‘T’]
[‘T’]
[‘N’]
[‘N’]
[‘N’]]
“`

ソースは以下のとおりである。dropオプションを”first”にした場合、合わせてhandle_unknown=’error’も設定しないと怒られる。

“`python
from sklearn.linear_model import LinearRegression
from sklearn.preprocessin

元記事を表示

Pythonのtkinterを8.6にアップデートする方法

##概要
Pythonでtkinterモジュールを使用していると、ボタンの文字が表示されないという現象が発生した。調べてみたところ、それはどうやらtkinter8.5のバグらしい。
このバグはtkinterをアップデートすることで治るが、現状だとtkinterを公式にアップデートする方法はない。
いくつかのサイトがtkinterのアップデート方法を紹介しており、その方法はPythonを再インストールするというものだった。だが、私の環境ではそれでもtkinterをアップデートすることはできなかった。

しかし、海外の有志の人間が作成したプログラムを使うことでtkinterを8.6にアップデートすることができたのでここで紹介する。

##1. Pythonとtkinterをアンインストールする
homebrew、pyenvなど、インストールしているパッケージからPythonとtkinterを全てアンインストールする。

Pythonのアンインストール
`$ brew uninstall python`
`$ pyenv uninstall x.x.x`

tkinterのアンインストール

元記事を表示

Django Tutorialを始める 1

# 何をやったか

公式のDjango Tutorialの通りにアプリを作る
https://docs.djangoproject.com/ja/2.2/intro/tutorial01/

# 環境

* Windows 10 Pro
* Python 3.7.5
* Django 2.2.5
* conda 4.7.12

# Djangoのインストール

Anacondaで仮想環境にDjangoをインストールした。

“`
> conda install django

> python -m django –version
2.2.5
“`

# プロジェクトの作成

Django公式によると

>初めて Django を使うのなら、最初のセットアップを行う必要があります。通常は、 Django の プロジェクト (project) を構成するコードを自動生成します。プロジェクトとは、データベースの設定や Django 固有のオプション、アプリケーション固有の設定などといった、個々の Django インスタンスの設定を集めたものです。

早速プロジェクトを作る。

“`

元記事を表示

東京大学大学院情報理工学系研究科 創造情報学専攻 2012年度夏 プログラミング試験

2012年度夏の院試の解答例です
※記載の内容は筆者が個人的に解いたものであり、正答を保証するものではなく、また東京大学及び本試験内容の提供に関わる組織とは無関係です。

### 出題テーマ
– ゲーム作成

### 問題文
※ 東京大学側から指摘があった場合は問題文を削除いたします。Screen Shot 2019-11-30 at 19.44.30.png
Screen Shot 2019-11-30 at 19.44.39.png

##

元記事を表示

GoogleスライドとOpen JTalkで動画作成

#なぜ作ろうと思ったか
* バイト先の一つであるプログラミング教室で,学習用に使う動画を作りたかったから.
* 動画を作りたいけど,顔出しや声出しは恥ずかしいと言う人はざらにいるはず.そう言う人が手軽に動画を作れたら便利ではないかと思ったから.

#何をしたのか
Googleスライドとは,Googleが作成したプレゼンテーションソフトです.ブラウザとGoogleアカウントがあれば,誰でもプレゼンテーションを作成することができます.今回,このGoogleスライドを用いてスライド動画を作成します.
Googleスライドでは,下図のようにスライドとその下にノート(話す内容などをメモするところ)があります.このスライドとノートを用いて,スライドに合わせて合成音声(Open JTalk)が話すスライドショーのような動画を作成します.
スクリーンショット 2019-11-30 21.00.50.png

  • OTHERカテゴリの最新記事