import numpy as np import sklearn import pandas as pd data = pd.read_csv('C:/Users/86159/Desktop/TaxDetection_NoLable.csv') data.head(11) X=data.loc[:,:] y=data.loc[:,] from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0) from sklearn.neighbors import KNeighborsClassifier clf = KNeighborsClassifier(n_neighbors=3) clf.fit(X_train, y_train.astype('int')) print("Test set predictions: {}".format(clf.predict(X_test))) print("Training set score:{:.2f}".format(clf.score(X_train,y_train))) print("Test set accuracy: {:.2f}".format(clf.score(X_test, y_test)))
时间: 2024-01-26 16:02:49 浏览: 22
这段代码中有一个问题,即y的赋值语句中没有指定具体的列名或索引,因此会导致后面的代码无法正确地运行。你需要指定y的列名或索引,以便正确地将y数据提取出来。假设你的数据集中有一个名为"label"的列,你可以将y的赋值语句修改为:
```
y = data.loc[:, "label"]
```
这样就可以将"label"列的数据提取出来作为y数据了。
相关问题
## 获取数据 from sklearn.metrics import r2_score import statsmodels.api as sm import numpy as np import pandas as pd import matplotlib.pyplot as plt data = pd.read_table('C:/Users/lb/Desktop/test/k-means_data.txt',sep='\t',engine="python",encoding = 'gbk') data.columns.values data.head()改为读取csv文件
可以使用`pd.read_csv()`函数读取csv文件。将代码中的`pd.read_table()`替换为`pd.read_csv()`,同时指定`delimiter`参数为逗号(默认值即为逗号),即可读取csv文件。下面是修改后的代码:
```python
from sklearn.metrics import r2_score
import statsmodels.api as sm
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('C:/Users/lb/Desktop/test/k-means_data.txt', delimiter=',', encoding='gbk')
data.columns.values
data.head()
```
优化以下代码使其提取csv文件中有小数点的行import numpy as np import pandas as pd data = pd.read_csv(r'C:\Users\Admin\Desktop\bisaifiles\population.csv',header=None) data decimal_data = df[df.dtypes == float] print(decimal_data.index.tolist())
以下是优化后的代码,它可以提取csv文件中有小数点的行:
```python
import pandas as pd
# 读取csv文件
data = pd.read_csv(r'C:\Users\Admin\Desktop\bisaifiles\population.csv', header=None)
# 将数据类型转换为float
data = data.apply(pd.to_numeric, errors='coerce')
# 提取有小数点的行
decimal_data = data[data.apply(lambda x: x.dtype == 'float64' or x.dtype == 'float32')]
# 输出有小数点的行的索引
print(decimal_data.index.tolist())
```
优化思路:
1. 使用 apply 函数将数据类型转换为 float;
2. 使用 apply 函数和 lambda 表达式判断每一列的数据类型是否为 float64 或 float32;
3. 通过布尔索引提取有小数点的行;
4. 输出有小数点的行的索引。
通过以上优化,代码实现更加简洁高效。