if __name__ == '__main__': # 通过pandas读入数据 data = pd.read_excel('../1data.xls', encoding='utf-8', header=None) data.columns = ['class_label', 'text', 'tokens'] label = data['class_label'] categories = [] for i in label: if i in categories: pass else: categories.append(i) print(categories) le = preprocessing.LabelEncoder().fit_transform(data['class_label']) data["class_label"] = le # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(data["tokens"], data["class_label"], test_size=0.2, random_state=1) # 文本特征提取 X_train_tfidf, tfidf_vectorizer = tfidf(X_train) X_test_tfidf = tfidf_vectorizer.transform(X_test) modelFile = "SVMModel.m" # 训练保存模型 SVMClassify() # 预测测试集结果 SVMTest()
时间: 2024-02-14 18:31:31 浏览: 108
这部分代码是在主函数中进行数据预处理、模型训练和测试的过程。首先,你使用pandas库读取了一个Excel文件,并将数据命名为data。然后,你为数据的列名进行了命名,分别是'class_label'、'text'和'tokens'。
接下来,你提取了标签(label)并将其存储在categories列表中。这个循环遍历了标签(label)列表,如果标签(label)已经在categories列表中,则跳过,否则将其添加到categories列表中。
之后,你使用LabelEncoder对data['class_label']进行了编码,并将编码后的结果存储在le变量中。然后,将data["class_label"]更新为编码后的结果。
接着,你使用train_test_split函数将数据集划分为训练集(X_train, y_train)和测试集(X_test, y_test),其中测试集占总数据集的20%。
然后,你使用tfidf函数对训练集进行了文本特征提取,得到了训练集的tfidf表示(X_train_tfidf)和tfidf向量化器(tfidf_vectorizer)。
接下来,你指定了模型文件的路径(modelFile)。
然后,你调用了SVMClassify函数进行模型训练,并保存了训练好的模型。
最后,你调用了SVMTest函数对测试集进行预测,并输出了一些评估指标。
相关问题
import urllib3 import pandas as pd import os def download_content(url): http = urllib3.PoolManager() response = http.request("GET", url) response_data = response.data html_content = response_data.decode() return html_content def save_excel(): html_content = download_content("http://fx.cmbchina.com/Hq/") cmb_table_list = pd.read_html(html_content) cmb_table_list[1].to_excel("Bit&Yanan.xlsx") def main(): save_excel() if __name__ == '__main__': main() os.startfile("Bit&Yanan.xlsx") import pandas as pd import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 rapx = (114.4936096 - 112.6832583)/50 rapy = (23.87839806 - 22.49308313)/50 minx = 112.6832583+rapx*2 maxx = 114.4936096+rapx*2 miny = 22.49308313 maxy = 23.87839806 data = pd.read_excel("Bit&Yanan.xlsx") print(data.head()),继续完成用
pandas和matplotlib库分析和展示数据的任务。
首先,我们可以查看一下读入数据后的前几行,使用`.head()`函数,例如`print(data.head())`。
接下来,你可以使用pandas库进行数据的筛选和处理,例如选取特定列、按照某列进行排序、按照某列筛选数据等等。具体使用方法可以参考pandas的官方文档或者各种在线教程。
最后,你可以使用matplotlib库绘制各种图表,例如折线图、散点图、柱状图等等,来展示数据的规律和趋势。同样的,matplotlib库的使用方法可以参考官方文档或者各种在线教程。需要注意的是,matplotlib库的绘图需要一定的数学基础和美学素养,因此建议在实际操作中结合各种案例和实践经验,不断提高自己的绘图技能。
import pandas as pd import numpy as np from sklearn.cluster import DBSCAN from sklearn import metrics from sklearn.cluster import KMeans import os def dbscan(input_file): ## 纬度在前,经度在后 [latitude, longitude] columns = ['lat', 'lon'] in_df = pd.read_csv(input_file, sep=',', header=None, names=columns) # represent GPS points as (lat, lon) coords = in_df.as_matrix(columns=['lat', 'lon']) # earth's radius in km kms_per_radian = 6371.0086 # define epsilon as 0.5 kilometers, converted to radians for use by haversine # This uses the 'haversine' formula to calculate the great-circle distance between two points # that is, the shortest distance over the earth's surface # http://www.movable-type.co.uk/scripts/latlong.html epsilon = 0.5 / kms_per_radian # radians() Convert angles from degrees to radians db = DBSCAN(eps=epsilon, min_samples=15, algorithm='ball_tree', metric='haversine').fit(np.radians(coords)) cluster_labels = db.labels_ # get the number of clusters (ignore noisy samples which are given the label -1) num_clusters = len(set(cluster_labels) - set([-1])) print('Clustered ' + str(len(in_df)) + ' points to ' + str(num_clusters) + ' clusters') # turn the clusters in to a pandas series # clusters = pd.Series([coords[cluster_labels == n] for n in range(num_clusters)]) # print(clusters) kmeans = KMeans(n_clusters=1, n_init=1, max_iter=20, random_state=20) for n in range(num_clusters): # print('Cluster ', n, ' all samples:') one_cluster = coords[cluster_labels == n] # print(one_cluster[:1]) # clist = one_cluster.tolist() # print(clist[0]) kk = kmeans.fit(one_cluster) print(kk.cluster_centers_) def main(): path = './datas' filelist = os.listdir(path) for f in filelist: datafile = os.path.join(path, f) print(datafile) dbscan(datafile) if __name__ == '__main__': main()
这是一个 Python 代码,主要使用了 Pandas、NumPy、sklearn.cluster 等库实现了 DBSCAN 和 KMeans 聚类算法。代码读入了一个文件夹中的多个文件,每个文件都是 GPS 坐标点的经纬度信息,然后使用 DBSCAN 算法进行聚类,并且输出了聚类的个数。接着使用 KMeans 算法对每个聚类进行细分,最后输出每个聚类的中心点坐标。
阅读全文