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

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

Hugging Faceのライブラリを使ってTokenize

#背景
最近、kaggleを始めました。
Tweetから文字列を抽出するコンテストなんですが、数打ちゃ当たるでは?と思い、色んな手法で単語を特徴量変換してみました。
その時に、便利だったToknizerをご紹介します。
※Pythonのライブラリです。

#Tokenizerとは?
機械学習で言葉を学習させるためには、その言葉を数値化(ベクトル化)する必要があります。その変換器のことを、Tokenizerと言います。おそらく。
例えば、
 This -> Tokenizer ->713
のように、数値化します。

#transformers
今回使うライブラリは「Hugging Face, Inc」が開発している「transformers」というライブラリを使います。
自然言語処理だとお馴染みのライブラリ(少なくともkaggleではよく使われてた)で、tokenizerだけでなく、最新の手法によるmodelも実装されています。

#さっそく使ってみましょう
今回は「RoBERTa」を例として使ってみます。
ソースは[ここ](https://github.com/ishikawa-tak

元記事を表示

Scikit-LearnとTensorFlowによる実践機械学習

データ分析時のツールとして、今まではずっとRを使ってきました。

MATLABも卒業研究では使っていましたが、仕事では使っていないので、もう1年は触っていません(MATLABは結構好きなんですけどね)。

これは単純に大学で使っていた(教わった)ツールがRやMATLABだった(statworksも使ったことはある)というのと、私の仕事がどちらかというとシステム実装ではなく、意思決定のためのデータ分析が多かったというのが理由です。大学では機械学習を勉強していましたが、仕事で機械学習を使ったのは片手で数えるほどしかなく、早い話が「単純に今までPythonを必要とする場面がなかった。」というわけです。

しかし、時代は機械学習全盛。そしてPythonには機械学習を使うのに便利なツールがたくさん揃っています。Rだけでも十分やっていけるとは思いますが、使えるものが多いに越したことはありません。特に、調べているとscikit-learnとTensorFlowはめちゃくちゃ便利そうだなと感じていました。

というわけで書籍を購入。

#書籍:scikit-learnとTensorFlowによる実践

元記事を表示

VSCodeをPyCharmにする。

# はじめに

Pythonistaのみなさまは当然、日々の開発にエクセレントなIDEである**PyCharm**を器用に使いこなして爆速開発していることと思います。

かくいう私もPythonistaの端くれとしてPyCharm沼にハマって早半年以上経ちました。

が、ここ最近。

みなさまはどうやらPyCharmのインテリジェンスっぷりをよく理解していないらしく、無料だからーとVSCodeを利用しているではないですか!!!

これはけしからん!!!!!我らがPyCharmはこんなにすごいんだぞ!!!!!と威張ってやろうと思っていたんですが調べてれば調べるほど…

「あれ?プラグイン組み合わせたらVSCodeで十分じゃね…?しかもめっちゃ軽い…無料でいいのこれ…」

と、感じる日々…

こうして、僕のVSCode→PyCharm化計画が始まった…

## 目次

– [目次](#目次)
– [VSCodeに求める機能](#vscodeに求める機能)
– [必要そうなプラグイン](#必要そうなプラグイン)
– [python開発に必要なプラグイン

元記事を表示

Python タプルとジェネレータの内包表記

タプルとジェネレータの内包表記の違いについてメモを残しておきます

まずは内包表記の復習から///

“`inner.py
list=[]
for x in range(10):
list.append(x)
print(list)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

#これを内包表記に書き換えると

list2=[x for x in range(10)]
print(list2)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

“`

では本題のタプルの内包表記とジェネレータと内包表記について

“` tuple.py
#普通のイテレータ
def g():
for i in range(4):
yield i
g=g()
print(next(g))
print(next(g))
print(next(g))
print(next(g))
“””
0
1
2
3
“””

g=(i for i in range(4))#タプルのように思えるがジェネレーターである
print(type

元記事を表示

Pythonのデータクラスのようにxarrayのデータ定義ができる拡張機能を公開しました

## TL;DR

[xarray]は多次元配列にメタデータ(軸のラベルなど)がくっついたデータを扱うためのツールとして、[NumPy]や[pandas]と同様にデータ解析で使われるPythonパッケージですが、様々なデータをxarray(のDataArray)で扱っていく中で以下のように感じることが増えてきました。

– 多次元配列の軸(dimensions)や型(dtype)を指定した配列生成関数がほしい
– 同様にメタデータ(coordinates)にも軸・型・デフォルトの値を指定したい
– 上2つを満たした[NumPy]の`ones()`のような特別な配列生成をしたい
– データ独自の処理(メソッド)を定義したい

これらをかなえる方法は色々考えられますが、Python 3.7から標準ライブラリに登場したデータクラス([dataclasses])が同じような悩み?をシンプルな書き方で解決していることに気づきました。そこで、データクラスと同様の書き方でユーザ定義のDataArrayクラスを作成するためのパッケージ「[xarray-custom]」を公開しましたのでご紹介します。

元記事を表示

プログラミング初心者 Python3エンジニア認定基礎試験の記録

## はじめに
Python3エンジニア認定基礎試験に合格したので所感や対策を記録します。

## 私の経歴
プログラミング経験無し、テスター歴半年。
勉強したことのある言語はJava、ExcelVBAなど。
変数、関数、繰り返し、条件分岐などの基本ルールなら受け入れられる程度の頭。

## 試験を受けた動機
勤務先にてPythonで作成されたツールのコードを見られる機会があった。せっかくなら少しでも箔をつけるために関連する試験が受けられないかな、と思った。合格して何かの役に立つのかは不明。

## 試験の概要
基礎とデータ分析の2種類しかないそう。Javaのようなレベル分けは現在無い。
基本情報のような決まった場所や日時で受けるのではなく、ITパスポートのように好きな場所と日時を自分で指定して受けられる。
受験にかかる金額が高い。11000円。高い…。
60分で全40問解く。7割の28問正解で合格。

## 他の受験経験者の記事について
すごい人しか記事を書かないのかもしれない。少ない勉強時間で合格した方が多く不安を煽られた。
下記の記事より、対策に使用したKindleの本と、出題

元記事を表示

【Python】Qiitaのトレンドを取得

##当記事の目的
PythonでQiitaのトレンドを取得する。

##Pythonがインストールされていることを確認。

“`
> python -V
Python 3.8.2
“`
##モジュールをインストール
requestsとbeautifulsoup4

“`
> pip install requests beautifulsoup4
“`
##取得スクリプトを作成
“`python:qiita.py
import requests
from bs4 import BeautifulSoup
import json
import re

html = requests.get(‘https://qiita.com’)

qiita = BeautifulSoup(html.content, “html.parser”)

qiita.select(‘div[data-hyperapp-app=”Trend”]’)

target_div = qiita.select(‘div[data-hyperapp-app=”Trend”]’)[0]

trend_items

元記事を表示

【Python】ヤフーニュースの主要トピックを取得

##当記事の目的
Pythonでヤフーニュースの主要トピックを取得する。

##Pythonがインストールされていることを確認。
“`
> python -V
Python 3.8.2
“`

##モジュールをインストール
requestsとbeautifulsoup4

“`
> pip install requests beautifulsoup4
“`

##ニュース取得スクリプトを作成

“`python:news.py
import requests
from bs4 import BeautifulSoup

html = requests.get(‘https://news.yahoo.co.jp’)

yahoo = BeautifulSoup(html.content, “html.parser”)

for title in yahoo.select(“.topicsList_main li.topicsListItem a”):
print(title.getText())
“`
##実行
“`
> python news.py
中国公船が領

元記事を表示

Flask(Python)及びExpress(Node.js)における、Get parameter 及び Post body の取得 , CORSの有効化

以下、6項目についてみていきます。HTMLファイルから送信しています。
送信も受信もローカルで行っています。サーバで試すなら、ドメインとか適宜読み替えてください。

1. Flask Get Parameter取得
2. Flask Post Body取得
3. Flask Cors有効化
4. Express Get Parameter取得
5. Express Post Body取得
6. Express Cors有効化

###注意点として、Content-Typeはすべてapplication/jsonで送信しています。

#HTML(送信側)
ブラウザで表示して、実行してください

“`html





Document


<

元記事を表示

Django Girls Tutorialメモ

django girls tutorialの勉強メモです
https://tutorial.djangogirls.org/ja/

## 試行環境

PythonAnywhereというPaaSを使ってデプロイするtutorialなので、pythonとgitが入る環境ならどこでも出来ます。環境構築についてもtutorial内にありますので、pythonとgitが入ってない方は以下のリンクを参照してください。
https://tutorial.djangogirls.org/ja/python_installation/

## 1.プロジェクトを作成して動かしてみる

まず適当な場所にprojectディレクトリを作成します。今回は /home/ユーザ名/django/proj1 にprojectを作成しました。

“`terminal:terminal
mkdir django
cd django
django-admin startproject proj1
“`

以下のようなファイルが自動で作成されます。

“`:/home/ユーザ名/django/proj1/

元記事を表示

遺伝的アルゴリズムとMGGモデルでナップサック問題を解く

## 遺伝的アルゴリズムとは
生物の進化のように、遺伝子の交叉・突然変異を通して世代を重ね、環境(解きたい問題)に適合した遺伝子(解)を得る手法。

![Untitled Diagram.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180925/d2d751b9-2025-eb9a-5dac-c2ff896590b2.jpeg)

## ナップサック問題とは
*泥棒が店に盗みに来たとする。
そこには、重さ・価値が様々な商品が一つずつある。
泥棒に持てる重さには限りがあるが、その条件下で盗める最大価値を求める。*
という問題である。

この問題は解を単純に求めようとすると、O(2^n)の総当たりで取り組むことになる。
そのため、遺伝的アルゴリズムを用いて近似解を比較的早く求めようということである。

## 遺伝的アルゴリズムの流れ
### 問題設定
今回は30個の商品があるとする。
タプルの第一要素が重さ、第二要素が価値である。

“`python
production = [(2, 21), (3,

元記事を表示

pythonでスプシのアドレスにメール送信

こちらの動画のメモです。

# 下準備
http://console.developers.google.com/
1. 上記URLから、「Googleシート」と「Googleドライブ」のAPIを有効化し、JSONファイルを入手
2. 新しくフォルダ作成
3. JSONファイルを creds.json というファイル名に変更をして、フォルダに入れる
4. フォルダの中に、send.py というファイルを新しく作成
5. 以下のコマンドを入力して2つインストールを済ませておく

“`
$ pip install gspread oauth2client
“`

## コードの中身

“`send.py
# メール送信関係
from email.mime.text import MIMEText
from email.utils import formatdate
import smtplib
# GoogleAPI連携関係
import gspread
from oauth2client.service_account i

元記事を表示

leetcode時代の外資コーディング面接対策

GAFAMとかFAANGとかいわれるような企業群、あるいはそれに近い傾向(東京であればおそらくIndeedとかPFNとか)のソフトウェアエンジニア面接対策についてメモを残す。

# コーディング面接とleetcode

外資IT企業ではソフトウェアエンジニアを雇う際にコーディング面接を非常に重視する。
業務上のコーディングよりは簡単めのプログラミングコンテスト問題に近く、アメリカの学生やエンジニアがIT企業を受ける際には事前対策を数ヶ月するのが常識になっているようだ。
一般的な面接プロセスについては[世界で闘うプログラミング力を鍛える本](https://www.amazon.co.jp/dp/B071GN3JN2)という本に詳しいが、ソフトウェアエンジニアとしてオファーを得るまでには通常、45~60分程度のコーディング面接を3~5セッション程度経ることになる。

ここ数年、[leetcode.com](http://leetcode.com)というコーディング面接の過去問サイトが広く候補者に使われるようになっている。
2018年ごろにコロンビア大の学生に聞いた話では、コンピュータサイ

元記事を表示

データ分析の一歩目(データ数、テーブル表示、欠損値)

データ分析の初めの一歩目、データの様子見&前処理(今回は様子見メイン)
kaggleの勉強用コンペであるHouse Prices: Advanced Regression Techniquesのデータを用いる。
家のデータあれこれから価格予想してねってお題。
[House Prices: Advanced Regression Techniques](https://www.kaggle.com/c/house-prices-advanced-regression-techniques/overview)

##データの中身チェック

“`python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
“`
どんなデータが入ってるかチェック

“`python
!ls ../input/house-prices-advanced-regression-techniques
“`
↓↓↓

“`
data_description.txt

元記事を表示

カエサル暗号プログラムをPythonで作ってみた。

# 挨拶
※コードは一番最後に載せています!

中田敦彦のYoutube大学を皆さんはご存じでしょうか?
最近、頭いい系の動画を見たいという願望にかられ、
よく見ているのですが、数ある動画の中で”暗号化”について
授業をされているものがありました。

まだ見られていない方はぜひおすすめします。
暗号の知識が全くない私でも楽しく見ることができました。
下記リンクから見れます。

で、その動画の中でひときわ僕の目に印象づいた言葉がありました。
そう!そこにあったのが**「カエサル暗号」!**という言葉でしたw

話を聞く限り、アルファベットの順番をある数分ずらして文章にするというのが
この暗号ルールということがわかりました。

例えば、
appleという言葉をカエサル暗号にかけると、「fuuqj」となります。
※今回は5つ右にずらした場合にしています。
aの5つ右隣りは「f」で、pの5つ右隣りは「u」で、、、と
文字の順番を利用して文章を暗号するのがカエサル暗号です。

この話を聞いてい

元記事を表示

第一回 アルゴリズム実技検定 過去問を python で解く

A 問題から O 問題まで解きました。が、多くは他の人コードを参考にしたり、ググったりしました。AC となったコードをほぼそのまま載せているので無駄な記述等があると思います。。。

# A
文字列だったら error と出力する。 try を使うと簡単。

“`python
#A

try:
print(int(input()) * 2)
except:
print(‘error’)
“`
# B
増減したかどうかを場合分け。愚直に書けば良い。

“`python
# B
N = int(input())

A_last = int(input())
for i in range(N-1):
A = int(input())
if A_last == A:
print(‘stay’)
elif A_last > A:
print(‘down {}’.format(A_last – A))
elif A_last < A: print('up {}'.format(A - A_la

元記事を表示

【Python】文字列シーケンスを使う

#はじめに
とみーさんのブログの[Python入門者のための学習ロードマップ](https://obgynai.com/python-roadmap/)に沿ってPython学習を進めています。
今回は[【Python】文字列シーケンスの使い方まとめ](https://obgynai.com/python-sequence/)を参考に
シーケンスの概念と文字列の使い方を扱います。

#対象者
– とみーさんブログで学習中の方
– 文字列シーケンスについて概要を知りたい方

#環境
Google Colaboratory

#学習内容
1. Pythonのシーケンスについて
シーケンスとは**変数を格納する倉庫(の集合体)**

2. 文字列でのシーケンスとは
“x = “文字列”“
の場合は「xが変数」となり、xに文字列が格納されている状態をいいます。

3. スライス←**格納された文字要素を抜き出す**

“x = “12345Python”“

“x[0]“ xの0番目をスライス
1 ←0が一番左(Python恒例ですね)

“x[-11]“ 右から数えて11番

元記事を表示

説明変数、目的変数別データの可視化方法

#はじめに
kaggleのcompetitionなど、機械学習を行う際にはまず最初にやるのはデータの可視化ではないでしょうか。そしてデータの可視化にはseabornを使うことが多いかと思います。でもグラフにも色々種類があってどれを使うか迷ってしまうことってありませんか?(僕はあります)「どのメソッドを使うとこういうグラフが描けるよ」という説明はたくさんあるのですが、「どういう状況ではこのグラフが良いよ」という説明は少ない気がしました。そこで、ここでは説明変数と目的変数の種類ごとにseabornのどのメソッドを使えばよいのかまとめてみました。

#環境
python: 3.6.6 seaborn: 0.10.0

#説明変数:離散量(カテゴリ) 目的変数:離散量
まずは説明変数、目的変数ともに離散量(カテゴリ)の場合。seabornのcountplotを用います。目的変数の各カテゴリがそれぞれどれだけ存在するのか描画します。countplotの引数xに説明変数を、hueに目的変数を渡します。データはtitanicです。

“`python
import pandas as pd
imp

元記事を表示

Inkbird IBS-TH1 miniの値をRaspberryPiでロギング

#はじめに
本記事は、**[Omron環境センサ(BAG型)の記事](https://qiita.com/drafts/ed2ffde4c87001111c12/edit)**と同内容を、
低価格な**Inkbird IBS-TH1 mini**で実施した記事です。

#Inkbirdとは?
様々な家庭用IoTセンサを作っている中国・深圳のメーカーです。
低価格(3000円くらい)でスマホアプリやAPIでのデータ取得等、一通りの機能がそろっている事が魅力です。

今回は、温度+湿度センサ搭載の
Inkbird IBS-TH1 mini
![Inkbird_mini.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/8e3af87b-bd69-28cc-f885-5c63666159e7.jpeg)
で、ロギングを実施します。

#必要なもの
**・RaspberryPi**(今回はPi3Model Bを使用)
**・Python実行環境**(今回はpyenvでPython3.7.6使用)
**

元記事を表示

Ruby と Perl と Java と Python で解く AtCoder ABC 065 C 階乗

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 今回のお題
*[AtCoder beginner Contets C – Reconciled?](https://atcoder.jp/contests/abc065/tasks/arc076_a)*
Difficulty: 647

今回のテーマ、階乗
# Ruby
犬`N匹`の階乗と猿`M匹`の階乗の掛け算になります。
階乗を関数化しておけば後々のコンテストに使用できます。

“`ruby.rb
n, m = gets.split.map(&:to_i)
MOD = 1_000_000_007
def nPk(n, k)
r = 1
while k > 0
r *= n
r %= MOD
n -= 1
k

元記事を表示

OTHERカテゴリの最新記事