質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.02%

csvデータ読み込み,そのデータを内挿する

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 251

mdshiba2

score 15

前提・実現したいこと

csvデータを読み込んで,その値をもとに,内挿をしたいです.

発生している問題

あるテキストにランダムな点から内挿をやる説明があったので,参照しながらプログラムを書きました.
作成したランダムな点でなく,csvデータにある点で内挿を行いたいのですが,プログラムの書き方が分かりません.以下が自作プログラムです.

import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np

from sklearn.preprocessing import PolynomialFeatures
x = np. array([2, 3, 4])
poly = PolynomialFeatures(3, include_bias=False)
poly.fit_transform(x[:, None])

rng = np.random.RandomState(1)
x = 10* rng.rand(50)
y = np.sin(x)+0.1*rng.randn(50)


from sklearn.linear_model import LinearRegression
model = LinearRegression(fit_intercept=True)
model.fit(x[:, np.newaxis], y)
xfit = np.linspace(0, 10, 1000)

from sklearn.pipeline import make_pipeline
poly_model = make_pipeline(PolynomialFeatures(12),LinearRegression())


poly_model.fit(x[:, np.newaxis], y)
yfit = poly_model.predict(xfit[:, np.newaxis])

plt.scatter(x,y)
plt.plot(xfit, yfit)


# 描画実行
plt.show()

また,読み込みたいcsvデータは以下のものです.

x,     z
0,     2
0.8,   9
1,     10
2,     -1
3,     11
4,     0
5,     8
5.1,   8.3
5.3,   8.2
6,     3
7,     11
7.1,   10
7.2,   11
7.3,   10.5
8,     -6
8.1,   -3.9
8.15,  -3.1
9,     9
10,    2
11,    10
11.6,  10.2
12,    -1
12.1,  -1.2
13,    5
14,    -2
14.8,  6.7
15,    7
16,    0

また,内挿をおこない,得たグラフの各座標値(xを0.1間隔ぐらいで)をcsvデータとして得ることも行いたいです.
プログラムを書くことに慣れておらず,書き方がわからないため,ご教示頂けると幸いです.
よろしくお願いいたします.

補足情報(FW/ツールのバージョンなど)

python3.6を使用しています.

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

numpy.loadtxtを使うと比較的楽でしょう。

import numpy as np

a = np.loadtxt("test.csv", delimiter=",", skiprows=1).T
x = a[0]
y = a[1]
print(x)
print(y)
""" =>
[ 0.    0.8   1.    2.    3.    4.    5.    5.1   5.3   6.    7.    7.1
  7.2   7.3   8.    8.1   8.15  9.   10.   11.   11.6  12.   12.1  13.
 14.   14.8  15.   16.  ]
[ 2.   9.  10.  -1.  11.   0.   8.   8.3  8.2  3.  11.  10.  11.  10.5
 -6.  -3.9 -3.1  9.   2.  10.  10.2 -1.  -1.2  5.  -2.   6.7  7.   0. ]
"""

numpy.loadtxt — NumPy v1.15 Manual

内挿に関しては、np.linspaceなどでxを作った後、poly_modelでpredictすれば良いです。csvへの書き出しはnp.savetxtあたりで行えるでしょう。


入出力まわりだったりnumpy配列の取扱だったり、というあたりは慣れないうちはけっこうゴタゴタするので、まずは慣れるのが先という感じもしますけど。

まずある程度しくみを理解して、あとはいろいろ動かしながら試行錯誤して慣れていくしかないですね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/17 22:10

    ご回答ありがとうございます.お返事遅くなり申し訳ありません.
    手を動かしながら慣れていきたいと思います.
    ありがとうございました.

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.02%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる