
分類問題のなかには、ラベル0が90%、ラベル1が10%といったデータが不均衡のケースが存在します。特段の工夫をせずに分類モデルを生成すると少数派の分類精度の低いモデルになることが知られています。分類モデルの目的が多数派の識別であれば深刻な問題にならないのですが、こうした不均衡データを取り扱う場合は、少数派データの識別が目的のケースが多いので、工夫が必要とされます。 本論は、過去の研究によって提案されている方法のうち、1)アンダーサンプリング、2)オーバーサンプリング、3)コスト関数のカスタマイズについての実装結果とその効果について報告します。 アンダーサンプリング アンダーサンプリングとは、少数派のデータ件数に合うように多数派データからランダムに抽出する方法です。この方法の良いところは直感的でわかりやすいことでしょう。 多数派のデータからのリサンプリングは、DataFrameであればsam
先月下旬にネット記事で「PyCaret」という機械学習のモデル設計・評価を迅速にできる「無償ライブラリ」があると知りました。PyCaretはシンプルさ、使いやすさ、低コード環境で市民データサイエンティストに「機械学習」を提供する目的でMoez Ali氏により作られたもので、Jupyter NotebookやGoogle Colab等の推奨アプリで動かすものです。 前処理の欠損値の補完、カテゴリカルデータの変換、複数の機械学習モデルの比較、評価、ハイパーパラメータの調整など、すべてを自動化してくれるとのことです。そんなことができて、「無償」なんて、ホンマかいな、とんでもないことだなと思ったのが素直な感想です。超高額で個人ユーザには到底手が出ない「Data○obot」みたいなことを、この無償ライブラリはしてくれるんだなぁと感動を覚えつつ、GWの長い外出しない休みを利用して、PyCaretのWe
前回は BERT についてその概要と使い方を紹介しました。今回は自然言語処理ライブラリである spaCy と spaCy をフロントエンドとする日本語NLPライブラリの GiNZA について紹介します。 1. 始めに 本記事では欧米で有名な自然言語処理ライブラリである spaCy とリクルートと国立国語研究所の共同研究成果である日本語NLPライブラリ GiNZA について紹介します。記事の前半では、spaCy と GiNZA の概要と日本語を処理する際の基本的な機能/操作について説明します。後半では、spaCy で提供される文章分類機能について、前回までに紹介した手法も含めて精度を比較してみます。 2. spaCy と GiNZA の概要 spaCy は Explosion AI 社の開発する Python/Cython で実装されたオープンソースの自然言語処理ライブラリで MIT ライセ
とあるきっかけでZeppelinというウェブベースのノートブックサービスの存在を知りました。恥ずかしながら、こういった「ノートブックの中でコードが実行できる」というものを全く知らなかったので、Pythonの学習記録を残すにはよいのではないかと興味を持ちました。 少し調べてみると、ZeppelinでもPython連携は可能みたいですが、よりPythonに近いものとして、Jupyterというものがある、ということで試しに導入してみました。 環境 Windows10(64bit) Anaconda3 4.3.1(これを入れると、jupyter_core 4.3.0がインストールされる) Anaconda導入 公式によると、Jupyterは単体でのインストールではなく、Anacondaの一部としてインストールするのが推奨のようです。 またまた不勉強ですが、Anacondaも知らなかったので調べたと
概要Pythonモジュールのpandasにはplot関数があり、これを使えばpandasで読み込んだデータフレームを簡単に可視化することができます。ただし、大量の引数(34個)があるにもかかわらず、公式マニュアルを見ても引数の一部しか説明されておらず、一体何ができるのか整理したくなり、この記事を書きました。データはirisを使い、plotの各引数の効果を検証しました。 import pandas as pd if __name__ == "__main__": #元データ df = pd.read_csv('iris.csv', index_col=0) どんな引数があるのか?df.plot?とヘルプを叩くことで、変数の一覧と説明(英語)を取得できます。実に34個の引数があるようです。使いこなして、簡単にいろんなグラフを書きたいですね。
2019年9月16、17日、日本最大のPythonの祭典である「PyCon JP 2019」が開催されました。「Python New Era」をキャッチコピーに、日本だけでなく世界各地からPythonエンジニアたちが一堂に会し、さまざまな知見を共有します。プレゼンテーション「Python_Webフレームワーク比較」に登壇したのは、CMSコミュニケーションズ代表取締役の寺田学氏。講演資料はこちら フルスタックなオールインワンのWebフレームワークDjango寺田学氏(以下、寺田):「Webフレームワークの紹介」に移ります。Django、Flask、Pyramid、Zope、Tornado、aiohttp、Guillotina、Bottle、responderの9種類の紹介をしていきます。 まず、Djangoの説明です。Djangoの公式サイトはここ(https://www.djangopro
Predictive modeling with deep learning is a skill that modern developers need to know. PyTorch is the premier open-source deep learning framework developed and maintained by Facebook. At its core, PyTorch is a mathematical library that allows you to perform efficient computation and automatic differentiation on graph-based models. Achieving this directly is challenging, although thankfully, the mo
>>> r.html.links {'//docs.python.org/3/tutorial/', '/about/apps/', 'https://github.com/python/pythondotorg/issues', '/accounts/login/', '/dev/peps/', '/about/legal/', '//docs.python.org/3/tutorial/introduction.html#lists', '/download/alternatives', 'http://feedproxy.google.com/~r/PythonInsider/~3/kihd2DW98YY/python-370a4-is-available-for-testing.html', '/download/other/', '/downloads/windows/', 'h
はじめに 多様なリソースからデータベースを構築するために,データ成形にはpandasを用いることが多いです.そのため pandasで作ったデータ -> DataBase というフローをスムーズに行うことが肝になります. いままではreplaceとappendしかなかったため,pandas側で頑張って成形してから更新するしかありませんでした.(これがすごくめんどくさい) そんな中,先日pandasに待望のSql Upsert機能追加のプルリクがあったので,動かしてみました.これによって作業効率を爆上がりさせてくれるはずです・・!! そもそもUpsertとは InsertとUpdateをやるという意味です. SqlにおけるUpsertの機能は大きく2つあります. Primary Keyベースで,存在するものはなにもせず,存在しないものはInsert(upsert_keep) Primary K
皆さんはREST APIの開発にどのようなフレームワークをお使いでしょうか? これまで、個人的には Flask 等の軽量なWebフレームワークを使って開発することが多く、REST API開発に特化したWebフレームワーク(以下、APIフレームワークと呼ぶ)を使った経験はありませんでした。 しかし先日、業務で Django REST Framework に触れる機会があり、REST APIの実装に必要な機能の多くが提供されていて、圧倒的に少ないコーディング量で開発が完了することを実感できました。例えば、フィルタリング(URLクエリストリングで検索条件等を指定し、取得する値を絞り込む)機能は、一から実装するとなると文字列をパースして、バリデーションして、クエリに渡して……、と結構面倒ですが、Django REST Frameworkではビルトイン機能として提供されているので、最小限のコードで実
前処理大全の第7章の展開では、縦持ちから横持ちのawesomeな方法が記載されていましたが、逆の横持ちから縦持ちへの言及がありませんでした。このような手法は、あまり多用されていないから記載がなかったのかもしれません。 今回、仕事で横持ちから縦持ちにする必要がでてきたので調べてみました。
PandasのDataFrameを縦持ちから横持ちにする方法とその逆(横持ちから縦持ちにする方法)についての備忘録です。 縦持ちと横持ち 縦持ちは、以下のように、カラム固定で1行に1つの値を持たせている表です。カラムをおいそれと変更できないDBのテーブルなどはこういった形かと思います。 customer_id product_id count C1 P1 1 C1 P2 2 C2 P2 2 C2 P2 1 C3 P3 3 一方で、横持ちは、カラム数が可変で1行に複数の値をもたせている表です。行列はこういう形になるでしょう。 P1 P2 P3 C1 1 2 0 C2 0 3 0 C3 0 0 3 縦持ちから横持ちへ変換する それでは縦持ちとなっている以下のデータを横持ちへ変換します。 import pandas as pd import numpy as np orders_df = pd.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く