自動化無しに生活無し

WEB開発関係を中心に備忘録をまとめています

  • 【scikit-learn】ロジスティック回帰は二値分類問題に、線型回帰は回帰問題に【教師あり学習】

    前提知識 分類問題: データを元にカテゴリを予測する問題。とりわけ2つのカテゴリに分ける分類問題を二値分類問題という。 回帰問題: データを元に連続値(価格、重量、カロリーなど)を予測する問題。 ロジスティック回帰は、「回帰」の名がついているが「二値分類問題」 ロジスティック回帰は、言葉通り回帰を使うため回帰問題であるように思えるが、実は二値分類問題に使われるモデルである。 一方、線型回帰は連続値を予測するため ...
  • 【教師なし学習】k-means(k平均法)により似たデータをクラスタリング(グループ化)する

    前提知識 教師なし学習とは? 教師なし学習とは、ラベル(正解)のない学習のことである。 例えば、犬猫の画像を用意して、それぞれ個々の画像に犬と猫のラベル(正解)を与えた上で学習させる方法を教師あり学習という。 一方で、教師なし学習の場合、犬と猫の画像をまとめて与えるだけで、犬や猫のラベル(正解)は学習に含ませない。 この教師なし学習のメリットは、事前にラベルを用意する必要がないということ。 例えば、ラベリング ...
  • 【Pillow】画像をまとめてクロッピング(トリミング)する【マルチスレッド高速化】

    自炊した画像データには、余白がある。そこでPillowを使って必要な部分だけトリミングしていく。 ただし、「画像を読み込んで、クロッピング(トリミング)をして保存をする」という処理を、大量に繰り返すのでマルチスレッドで高速化させる。 速度差を意識するため、処理時間も計測する。 まずはforループで直列実行 まずは直列実行してみる。 from PIL import Image import os input_dir = "images" output_dir = "cropped_images" # 出力先が存在しない場合はつくる。 os.makedirs(output_dir, exist_ok=True) # 切り抜き範囲 ...
  • Pythonのthreading.Thread と concurrent.futures.Threadpoolexecutor の違い【マルチスレッド処理】

    Pythonのマルチスレッドには2つの方法がある。 threading.Thread と concurrent.futures.Threadpoolexecutor の2つである。 本記事ではその比較をまとめる 比較項目 threading.Thread Threadpoolexecutor スレッドの管理 自分でスレッドの実行と終了の管理が必要 自動的に管理される 戻り値の扱い 基本取得できない(共有変数などを使う) 取得できる エラーハンドリング 各スレッドでtry-exceptをしなければならない Future.exception() で取得可能 スレッドの起動 個別に起動できる タスクをプールに投げるので、個別にはスレッドの起 ...
  • Ubuntuの夜間モードが通用しない場合の対処法

    • 作成日時:
    • 最終更新日時:
    • Categories: others
    • Tags: Ubuntu tips
    GUIから夜間モードの操作をする。 gnome-control-center display これで夜間モードの設定画面が開く。 コマンドから夜間モードを有効にする。 gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled true これでONになり、 gsettings set org.gnome.settings-daemon.plugins.color night-light-enabled false これでOFFになる。ショートカットキーにも割り当てておけば便利かもしれない。 どうしても夜間モードが効かない場合は? ログアウトして再度ログインする。これでデスクトップが起動し直され、夜間モードが正常に機能する。 ...
  • OracleDBのSQLまとめ

    dockerにインストールしたOracle−XEを使用している。 UbuntuのDockerでOracle DB SQL Silverの試験勉強の環境を整える HR スキーマを搭載した。 雇用日時をもとに絞り込みをする 【非推奨】文字列を与えると、暗黙的にDATE型に変換する 例えば、2015年1月1日以降に雇用した従業員を出力するには、 SELECT * FROM employees WHERE hire_date >= '2015-01-01' ; そして、新人を上に表示させるため、降順に並び替える。 SELECT * FROM employees WHERE hire_date >= '2015-01-01' ...
  • UbuntuのDockerでOracle DB SQL Silverの試験勉強の環境を整える

    至急、Oracle DB SQL Silverの試験を受ける必要が出てきた。 そこで、すでにあるUbuntuのdockerで、OracleDBの環境を整えていく。 前提 dockerのバージョンは以下の通り、 Docker version 26.1.3, build 26.1.3-0ubuntu1~22.04.1 Oracle公式が提供しているdockerのイメージは下記。 https://hub.docker.com/r/gvenzl/oracle-xe Oracle社のエンジニア、G. Venzl 氏から提供されている。 dockerのイメージをPullする 現時点での最新版は、21.3.0 なので、以下の ...
  • 【データベース】基本的なSQL文の一覧【SELECT, INSERT INTO, DELETE, UPDATE, UNION, JOIN】

    【導入】dockerでDatabaseを用意する。 Oracle DBを用意する UbuntuのDockerでOracle DB SQL Silverの試験勉強の環境を整える ただし、この記事ではPostgreSQLでの使用を想定しているため、SQLが若干違う点に注意。 テーブルをつくるCREATE TABLE文 CREATE TABLE テーブル名 ( カラム名1 データ型 [制約], カラム名2 データ型 [制約], ... ); この書き方に倣って、 CREATE TABLE categories ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT ...
  • 【C#】LINQのメソッドのまとめ

    LINQ の概要と前提情報 LINQ はコレクションに対して宣言的にクエリを書くためのしくみである。 コレクションとはイテラブルな要素のことであり、配列や辞書、リストが当てはまる。 C#の配列は固定長であり、リストは可変長。リストの方には別途メソッドが豊富に用意されている。配列は固定長なので、Pythonのタプルに近いだろう。 辞書はキーを指定して値を取り出す。 基本のWhereとToList class Student { public string Name; public int Age; public int Grade; } var students ...
  • Seleniumの基本操作のまとめ

    Seleniumは同じような処理が続くため、基本操作をまとめた。 ただ、forループとtry 文が続く冗長構成のため、後に修正する予定。 ソースコード from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait, Select from selenium.webdriver.support import expected_conditions from selenium.webdriver.common.by import By from selenium.common.exceptions import TimeoutException driver = webdriver.Firefox() wait = WebDriverWait(driver, 10) retry = 10 # 要素が見えているか def xpath_visible(xpath: str): return wait.until(excepted_conditions.visibility_of_element_located((By.XPATH, xpath))) def xpath_click(xpath: str): for _ in range(retry): try: elem = xpath_visible(xpath) elem.click() except: continue else: return raise TimeoutException(f"クリックできませんでした: {xpath}") def xpath_send_keys(xpath: str, keys: str): for _ in range(retry): try: elem = xpath_visible(xpath) elem.send_keys(keys) except: continue else: return raise Timeout ...