使用旧客户数据定​​位新客户

Posted

技术标签:

【中文标题】使用旧客户数据定​​位新客户【英文标题】:Target new customers using old customer data 【发布时间】:2021-12-19 14:54:23 【问题描述】:

我有两张桌子。

    包括交易数据的老客户数据。 没有交易数据的新客户数据。 我需要对数据进行建模,以推荐新客户表中要定位的客户。

我遵循的过程。

    RFM 对旧客户数据进行细分,并将客户分为 11 类。 由于大部分数据是字符串类型,通过 LabelEncoder() 转换为数字。 旧客户数据分为 X train(3492,12) 和 X test(3492,) 新的客户数据只是 Ytrain(983,12)。括号中的值是它的形状。 执行 KNN 算法。

请建议流程是否正确 我也遇到以下错误。

train_cols = ['address', 'state', 'gender', 'job_title', 'job_industry_category', 'wealth_segment', 'owns_car', 'Title']
from sklearn.preprocessing import LabelEncoder
enc = LabelEncoder()
for col in train_cols:
  Training[col] = Training[col].astype('str')
  Training[col] = enc.fit_transform(Training[col])
//Training is the old customer data

test_cols = ['address', 'state', 'gender', 'job_title', 'job_industry_category', 'wealth_segment', 'owns_car']
from sklearn.preprocessing import LabelEncoder
enc = LabelEncoder()
for col in test_cols:
  Test[col] = Test[col].astype('str')
  Test[col] = enc.fit_transform(Test[col])
//Test is the new customer data

Xtrain = Xtrain.transpose(); Ytrain = Ytrain.transpose()
//shape - Xtrain = (12,3492), Ytrain = (12,983)

from sklearn.neighbors import KNeighborsClassifier
classifier = KNeighborsClassifier(n_neighbors=5)
classifier.fit(Xtrain, Ytrain)

y_pred = classifier.predict(Xtest)

错误:

//ValueError                                Traceback (most recent call last)
<ipython-input-211-8ae3ac010601> in <module>()
----> 1 y_pred = classifier.predict(Xtest)

1 frames
/usr/local/lib/python3.7/dist-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
    554                     "Reshape your data either using array.reshape(-1, 1) if "
    555                     "your data has a single feature or array.reshape(1, -1) "
--> 556                     "if it contains a single sample.".format(array))
    557 
    558         # in the future np.flexible dtypes will be handled like object dtypes

ValueError: Expected 2D array, got 1D array instead:
array=[10  2  3 ...  4  0  3].
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

模型经过训练但无法预测。我无法重塑它。请帮帮我。

【问题讨论】:

【参考方案1】:

我改变了数组的形状,问题就解决了:

Xtest = Xtest.reshape(1,-1)

我不确定为什么 (-1,1) 不起作用。

【讨论】:

以上是关于使用旧客户数据定​​位新客户的主要内容,如果未能解决你的问题,请参考以下文章

Kinesso任命四位新的区域首席执行官

存储客户付款详细信息 - PCI 合规性

客户端使用旧 HTTP 版本时重定向到错误

如何在 JAX-WS 客户端中指定 ReplyTo EndpointReference?

更新 CRM 中的旧数据

您的 svn 客户端太旧错误,如何解决?