繁体   English   中英

隐马尔可夫 Model 机器学习

[英]Hidden Markov Model Machine Learning

我目前正在尝试使用 pandas 从 yfinance 获取数据,这是我的代码如下:

import pandas as pd
import numpy as np

from pyhhmm.gaussian import GaussianHMM
from pandas_datareader.data import DataReader

import matplotlib.pyplot as plt


start_date = "2017-01-01"
end_date = "2023-01-04"
symbol = "SPY"
data = DataReader(name=symbol, data_source= "yahoo", start=start_date, end=end_date)
data

我已经使用 pip 安装了所有包,但是当我开始调用数据变量时它会抛出错误和异常。

我真的很感激任何帮助。

这些是抛出的错误:

 TypeError Traceback (most recent call last) Input In [4], in <cell line: 8>() 6 api = "" 7 session = "" ----> 8 data = DataReader(name=symbol, data_source= "yahoo", start=start_date, end=end_date) 9 data.head() File ~/opt/anaconda3/lib/python3.9/site-packages/pandas/util/_decorators.py:207, in deprecate_kwarg.<locals>._deprecate_kwarg.<locals>.wrapper(*args, **kwargs) 205 else: 206 kwargs[new_arg_name] = new_arg_value --> 207 return func(*args, **kwargs) File ~/opt/anaconda3/lib/python3.9/site-packages/pandas_datareader/data.py:370, in DataReader(name, data_source, start, end, retry_count, pause, session, api_key) 367 raise NotImplementedError(msg) 369 if data_source == "yahoo": --> 370 return YahooDailyReader( 371 symbols=name, 372 start=start, 373 end=end, 374 adjust_price=False, 375 chunksize=25, 376 retry_count=retry_count, 377 pause=pause, 378 session=session, 379 ).read() 381 elif data_source == "iex": 382 return IEXDailyReader( 383 symbols=name, 384 start=start, (...) 390 session=session, 391 ).read() File ~/opt/anaconda3/lib/python3.9/site-packages/pandas_datareader/base.py:253, in _DailyBaseReader.read(self) 251 # If a single symbol, (eg, 'GOOG') 252 if isinstance(self.symbols, (string_types, int)): --> 253 df = self._read_one_data(self.url, params=self._get_params(self.symbols)) 254 # Or multiple symbols, (eg, ['GOOG', 'AAPL', 'MSFT']) 255 elif isinstance(self.symbols, DataFrame): File ~/opt/anaconda3/lib/python3.9/site-packages/pandas_datareader/yahoo/daily.py:153, in YahooDailyReader._read_one_data(self, url, params) 151 try: 152 j = json.loads(re.search(ptrn, resp.text, re.DOTALL).group(1)) --> 153 data = j["context"]["dispatcher"]["stores"]["HistoricalPriceStore"] 154 except KeyError: 155 msg = "No data fetched for symbol {} using {}" TypeError: string indices must be integers

def wordInSymbs(str):
    list = []
    for i in range(len(str)):
        list.append(str[i])
    return list

n = int(input())
parts = []
numbers = []
listOfCounts = [0]
for i in range(n):
    parts.append(wordInSymbs(input()))
m = int(input())
listOfCounts = [0]*m
for i in range(m):
    numbers.append(wordInSymbs(input()))
    for j in range(len(parts)):
        if set(parts[j]) <= set(numbers[i]):
            listOfCounts[i] += 1
for i in range(m):
    if listOfCounts[i] == max(listOfCounts):
        print(''.join(numbers[i]))
 n = int(input())
    str = ''
    for i in range(n):
        str += 'r, y, g'
        if (i + 1) != n:
            str += ', y, '
    print(str.count('r'), str.count('y'))

'切'

from sys import stdin


option = input()
list = []
for line in stdin:
    if line.rstrip() == 'Exit':
        break
    newline = line.split()
    list.append(newline)

if option[:-1] == '-c':
    s = int(option[-1])-1
    for i in range(len(list)):
        print(list[i][s])
else:
    for i in range(len(list)):
        print('\t'.join(list[i]), end='\n')

正如评论中所述,Yahoo Finance 在那里共享历史数据的方式发生了变化(已加密),这打破panda_datareader package 尝试访问该数据的方式。 这导致了 OP 看到的问题。 此更改已在此Pull Request中修复,尽管它尚未合并并作为新版本的pandas_datareader 目前,可以直接使用和安装带有修复的版本:

pip install git+https://github.com/hellc/pandas-datareader.git@87dda3f297df8f4b3253c6f2d5006b5ac43a9150

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM